Connecting a Phidgets 1129 touch sensor to the Arduino

I've connected a Phidget 1129 capacitive touch sensor to Analog In 0 and am using Tom Igoe's AnalogIn SerialOut code example in Arduino (I've attached it below though it comes with the Arduino software).

I've put a 10k resistor between the 5V and the sensor . Ground in Gnd..... Analog Input to Analog 0....

My problem is that though the sensor definately I can't seem to get much variation in the output values, it's either a 0 or a 255 for the most part. The sensor seems more digital than analogue.

I know that Phidgets sells their own brand of sensor to USB interfaces, but I'd like to use my Arduino. In the Phidget 1129 touch sensor product manual, they give these tips for "Other Interfacing Alternatives" :

If you want maximum accuracy, you can use the RawSensorValue property from the PhidgetInterfaceKit. To adjust a formula, substitute (SensorValue) with (RawSensorValue / 4.095)

If the sensor is being interfaced to your own Analog to Digital Converter and not a Phidget device, our formulas can be modified by replacing (SensorValue) with (Vin * 200). It is important to consider the voltage reference and input voltage range of your ADC for full accuracy and range.

Hmmm... I'm not sure where to substitute these values :frowning:

The AnalogueIn SerialOut sketch:

Analog input, analog output, serial output

Reads an analog input pin, maps the result to a range from 0 to 255
and uses the result to set the pulsewidth modulation (PWM) of an output pin.
Also prints the results to the serial monitor.

The circuit:

  • potentiometer connected to analog pin 0.
    Center pin of the potentiometer goes to the analog pin.
    side pins of the potentiometer go to +5V and ground
  • LED connected from digital pin 9 to ground

created 29 Dec. 2008
by Tom Igoe


// These constants won't change. They're used to give names
// to the pins used:
const int analogInPin = 0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)

void setup() {
// initialize serial communications at 9600 bps:

void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// change the analog out value:
analogWrite(analogOutPin, outputValue);

// print the results to the serial monitor:
Serial.print("sensor = " );
Serial.print("\t output = ");

// wait 10 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:

Hi Lickey, the touch sensor is really sensitive so it does behave much like a digital sensor. The big benefit comes in it's self-calibration so to speak. The touch sensor as it comes can be connected to 1/2" thick piece of plastic, glass or paper and detect touch through that surface (after it re-calibrates, which takes just 30 seconds). To give you an idea, this project used those touch sensors on each of the metal poles.

What are you hoping to do with it? There might be a better sensor out there for your application.

  • Kat