Skip to content
touch sensing library for Arduino
Branch: master
Clone or download
martin2250 Merge pull request #5 from UriShX/patch-1
Add support for ATtiny13
Latest commit 3b33b99 Sep 4, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples/Buttons initial release Apr 4, 2016
src Merge pull request #1 from UriShX/patch-2 Sep 4, 2018
.gitattributes 🎉 Added .gitattributes Apr 4, 2016 .md compliant Apr 23, 2017
keywords.txt Use correct separator in keywords.txt Oct 17, 2017 Update Apr 11, 2018


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 acquire precise readings. This library makes use of the AVRs internal wiring to get decent resolution with just a single pin.


int val = analogChannel, int samples = 100);

  • analogChannel: the pin to use, you can just use A0 - A5
  • samples: (optional) the amount of samples to take, defaults to 100
    ...range 1 - 65535 ...(value does not change with different amounts of samples)

How it works

To Acquire a reading, the library does the following:

  • charge the test pin to 5V via pullup resistor (not directly to prevent short circuits)
  • discharge the internal ~14pF capacitor
  • set the pin to tristate
  • connect the 14pF capacitor with the pin so that charge distributes evenly
  • measure the voltage of the internal cap with analogRead()
    ...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

You can’t perform that action at this time.