ADCTouch Library for Arduino Author: martin2250 Contact: email@example.com
ADCTouch is a library that allows users to create a capacitive sensor without ANY external hardware.
Most capacitive touch libraries require two pins and a large resistor to aquire precise readings. This libraray makes use of the AVRs internal wiring to get decent resolution with just a single pin.
int ADCTouch.read(byte analogChannel, int samples = 100);
the returned integer can have the same value as analogRead(), since it uses it to read the sensor. (0 - 1023)
This sketch will print the offset compensated readings of A0 and A1 to the serial monitor, as well as a binary value if it passes the threshold value (=is the button pressed?)
To Aquire a reading, the library does the following:
If the pin has a low capacitance, the stored charge will be small as will the resulting voltage, if the external capacitance is equal to 14pF, the volatage should be ~2.5V. Even higher capacitances will result in volatges > 2.5V. The chip and arduino board already have stray capacitances that will produce an output of ~390 and just a single external wire can boost that up to 500, so you really need offset compensation.
The accuracy is really good, most often even the LSB/smalles digit can still yield usable data and just vary by a single unit between readings (at only 100 samples, more will mean even less variation). The sensitivity is phenomenal, with a large enough surface, it can sense a person in more than 2 feet distance.
A more accurate explanation can be found here
Here you can enter all devices that you have confirmed to work with this library, theoretically all boards that have an AVR chip inside them should work, but I'm not sure if the Mega also does. Also some boards have more than A0-A5 analog pins. If your device is not listed here, you can still try it out, there is absolutely no risk of damaging your board, even if you connect the sensor directly to +5V
Drag the entire "ADCTouch" folder into your "<arduino directory>/libraries" folder, alternatively use "sketch/import library/add library"