Capacitive sensor array

Here's a project using one of my tiny arduino boards based on the concept of the capsense library (although I ended up writing my own code) that I did with a linear series of 8 capacitive sensors. They are made from 1"x.5" pieces of copper tape. I stuck them to graph paper so that I could align and space them precisely. I then added a strip and a series of pads across the top so that I could mount an SMD LED for each sensor, and added a backing and border to connect to ground. It works extremely well when I touch the pads directly, and it also works through a sheet of paper or plastic, though I have to press a little harder (so that more skin is pressed up against the pad).


Cool!

Here's the code I used. The redundant readings are not really necessary, I wrote that to compensate for the unreliability of the more hastily-constructed sensors initially experimented with.

int sensors[] = {11, 12, 14, 15, 16, 17, 18, 19};
int leds[] = {9, 8, 7, 6, 5, 4, 3, 2};
int readings[] = {0, 0, 0, 0, 0, 0, 0, 0};
int controlpin = 10;
bool controlstate = 0;

void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, 1);
pinMode(controlpin, OUTPUT);
digitalWrite(controlpin, controlstate);
for (int i = 0; i < 8; i++) pinMode(leds*, OUTPUT);*

  • Serial.begin(9600);*
    }
    void loop() {
  • readSensors();*
  • for (int i = 0; i < 8; i++) {*
    _ padprint(readings*, 4);_
    digitalWrite(leds_, (readings > 1));
    }
    Serial.println();
    }
    void readSensors () {
    for (int i = 0; i < 8; i++) {
    readings = 0;
    }
    for (int k = 0; k < 4; k++) {
    controlstate ^= controlstate;
    digitalWrite(controlpin, controlstate);
    int notfinished;
    for (int j = 0; j < 256; j++) {
    notfinished = 0;
    for (int i = 0; i < 8; i++) {
    if (digitalRead(sensors) != controlstate) readings++;
    notfinished++;
    }
    if (!notfinished) break;
    }
    }
    }
    void padprint(int number, int chars) {
    for (int i = pow(10, chars - 1); number <= i - 1; i /= 10) Serial.print("0");
    Serial.print(number);
    Serial.print(" ");
    }[/quote]*_

nice work there :slight_smile: