#include <CapacitiveSensor.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_4_2 = CapacitiveSensor(4,2);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
CapacitiveSensor   cs_4_3 = CapacitiveSensor(4,3);        // 10M resistor between pins 4 & 6, pin 6 is sensor pin, add a wire and or foil
CapacitiveSensor   cs_4_5 = CapacitiveSensor(4,5);        // 10M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil

void setup()                    
{
   cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   Serial.begin(9600);
}

void loop()                    
{
    long start = millis();
    long total1 =  cs_4_2.capacitiveSensor(30);
    long valCons1 = constrain(total1, 10000, 225000);
    long mappedVal1 = map(valCons1, 10000, 225000, 0, 1024);
    
    long total2 =  cs_4_3.capacitiveSensor(30);
    long valCons2 = constrain(total2, 10000, 225000);
    long mappedVal2 = map(valCons2, 10000, 225000, 0, 1024);
    
    long total3 =  cs_4_5.capacitiveSensor(30);
    long valCons3 = constrain(total3, 10000, 225000);
    long mappedVal3 = map(valCons3, 10000, 225000, 0, 1024);

    Serial.print(millis() - start);        // check on performance in milliseconds
    Serial.print("\t");                    // tab character for debug windown spacing

    Serial.print(total1);                  // print sensor output 1
    Serial.print("\t");
    Serial.print(total2);                  // print sensor output 2
    Serial.print("\t");
    Serial.println(total3);                // print sensor output 3

    Serial.print(valCons1);
    Serial.print("\t");
    Serial.print(valCons2);
    Serial.print("\t");
    Serial.println(valCons3);
    
    Serial.print(mappedVal1);
    Serial.print("\t");
    Serial.print(mappedVal2);
    Serial.print("\t");
    Serial.println(mappedVal3);

    delay(300);                             // arbitrary delay to limit data to serial port 
}
