I received a few Arduino touch sensors from DealExtreme just because they were dirty cheap and I have a few ideas where I could use them as device power switches. There is probably an easier way to build a touch sensor for Arduino without that many additional components, but let’s see what we can do with this cheap sensor for just $2.6 or less than £1.7.
As for most things from DealExtreme (and many other cheap components sites originating from China) there is no documentation, but it turns out to be very easy to use this sensor. Just hook it up to an Arduino using the following diagram:
It has 4 pins:
- A0 – inverted signal
- G – should be connected to ground
- + – should be connected to 5V power supply
- D0 – touch signal
Touch signal consist of 50Hz signal pulse with 4.8ms pulse width on the D0 output pin for as long as finger (or any other body part) touches the bent pin on the transistor.
The A0 pin produces inverted signal.
That’s all there is to it. The pulse signal provides a small bit of complexity for the Arduino code, but is easily handled by adding a 50ms timeout of HIGH signal in the D0 pin connected to digital pin 3 on Arduino:
//setup default LED on pin 13 const int ledPin = 13; //setup touch sensor on pin 3 const int touchPin = 3; //store the time when last event happened unsigned long lastEvent = 0; //store the state of LED boolean ledOn = false; //setup pins void setup() { pinMode(ledPin, OUTPUT); pinMode(touchPin, INPUT); } void loop(){ //read touch sensor state int touchState = digitalRead(touchPin); //only interested in the HIGH signal if (touchState == HIGH) { //if 50ms have passed since last HIGH pulse, it means that the //touch sensor has been touched, released and touched again if (millis() - lastEvent > 50) { //toggle LED and set the output ledOn = !ledOn; digitalWrite(ledPin, ledOn ? HIGH : LOW); } //remember when last event happened lastEvent = millis(); } }
Touching the touch sensor will light up the LED, but will not do anything as long as user keeps touching the sensor. Releasing the sensor and touching it again will turn off the LED and so on.
P.S. Loving my Rigol DS1052E digital oscilloscope. It’s a real eye opener to electronic signal debugging. Fantastic piece of kit.