In the last few months I have been working on designing new methods for inputs on wearable e-textiles. The original “fabric button” consisted of two pads made from conductive fabric that would make contact and act as a standard button. While this design does seem to be fairly accurate and simple to build, it is somewhat costly. Conductive fabric is not the cheapest and you require 2 fairly large peices of this fabric for each button to ensure there was proper contact. Another issue with the fabric buttons was that two pieces of metal wire were required to be attached to the conductive fabric which sometimes came loose and result in a faulty button.

As you can see there are many issues with fabric push buttons so I wanted to find an alternative to all this. I started researching how metal touch pads worked and even found an arduino library that will let you have one button per input pin. There are two methods when implementing touch pads to your design. There is a hardware method and a software method. Using a 555 Timer you can easily make a really accurate and simple touch pad. The only problem is that you will need a 555 timer for each touchpad. Above is a picture of the 555 touch circuit. You can find more info about this cuirtit here:

The second method is a software option which in my opinion is way better for more buttons if you are going to be using the Arduino anyways. Note that the more buttons you have the slower and less accurate your pads are going to be. Using the software method will save you on the 555 timers and it works really easily with a library. This library is called: CapSense. Using this library and the hardware writeup on the page I was able to reproduce a touch pad that worked fairly well and was accurate.

After figuring out how to get a touch pad wired up I was able to simply reproduce this using conductive thread woven into fabric so achieve the same results. This worked great and was a much simpler, cheaper and more accurate way of using buttons on fabric applications. Below is some sample code to get an LED to turn on when you touch a pad.

#include <CapSense.h>

* Uses a high value resistor e.g. 10M between send pin and receive pin
* Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
* Receive pin is the sensor pin - try different amounts of foil/metal on this pin
CapSense cs_4_2 = CapSense(4,2); // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
CapSense cs_4_5 = CapSense(4,5); // 10M resistor between pins 4 & 6, pin 6 is sensor pin, add a wire and or foil
void setup()
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF); // turn off autocalibrate on channel 1 - just as an example


void loop()
long start = millis();
long total1 = cs_4_2.capSense(30);
long total2 = cs_4_5.capSense(30);
if (total1 > 50){
digitalWrite(13, HIGH);
else if (total2 > 50){
digitalWrite(12, HIGH);
digitalWrite(12, LOW);
digitalWrite(13, LOW);

delay(20); // arbitrary delay to limit data to serial port

Here is a video of the pads working:

Tagged with:  

2 Responses to “Fabric Touch Pads and other Fabric Based Inputs”

  1. […] with e-textiles and fabric based inputs, I ran across a problem when trying to prototype some wearable buttons I had made. I needed a way to connect the conductive fabric to a prototyping board so that I could make it […]

  2. […] Vlad Cazan writes about his experience making fabric buttons! […]

Leave a Reply

Free WordPress Themes

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

Free WordPress Themes