messageSendChar('d'); // Echo what is being read for (char i=2;i<14;i++) { messageSendInt(digitalRead(i)); // Read pins 2 to 13 } messageEnd(); // Terminate the message being sent break; // Break from the switch

case 'a': // READ analog pins

messageSendChar('a'); // Echo what is being read for (char i=0;i<6;i++) { messageSendInt(analogRead(i)); // Read pins 0 to 5 } messageEnd(); // Terminate the message being sent

}

}

void writepin() { // Write pin

int pin; int state;

switch (messageGetChar()) { // Gets the next word as a character

case 'a' : // WRITE an analog pin

pin = messageGetInt(); // Gets the next word as an integer state = messageGetInt(); // Gets the next word as an integer pinMode(pin, OUTPUT); //Sets the state of the pin to an output analogWrite(pin, state); //Sets the PWM of the pin break; // Break from the switch

// WRITE a digital pin case 'd' :

pin = messageGetInt(); // Gets the next word as an integer state = messageGetInt(); // Gets the next word as an integer pinMode(pin,OUTPUT); //Sets the state of the pin to an output digitalWrite(pin,state); //Sets the state of the pin HIGH (1) or LOW (0)

So far I get mixed results when playing with cap sense but I can tell you that how long it takes to sense is a matter of how long it takes to bleed the cap through the resistor, the higher the value of those two the longer it takes to bleed. You have with resistor-capacitor setup what is called the time constant, R x C (resistance times capacitance) which I find a little funny with cap sense since changing C is how it works and yet time 'constant'... oh well, it's probably a geek thing.

Here is the most minimal cap sense I know of. It works but I wouldn't use it as is outside of test.http://arduino.cc/playground/Code/CapacitiveSensor

Just saying that between the resistors and capacitive elements you might likely be able to change values of those and the same code be sensing quicker. The smaller the resistor the faster the capacitor will bleed, the smaller the capacitor the faster it will reach low value.

I haven't dug into the example, I've done and played with two playground cap sense sketches and evolved setups from there but as I say, I got mixed results. A couple were good as far as making cheap buttons.

That code runs -fast-. Direct port manipulation fast not copy the registers, do the function, copy the registers back kind of fast but -do it now- kind of fast. The reason being is that's how fast that version bleeds down.Other versions of cap sense I have made work run in the near-milliseconds to milliseconds fast but at least don't put bare wire between a finger and a pin.

What I do see is code that has a lot of sequence per loop (some with serial reads/writes) and maybe an interrupt with an I don't know how long IRQ (since I'm not going to become an expert in the libraries used any time soon).

Perhaps not reading the breakout board every time in loop or reading the 13th sensor before that would work? The cap sense code I linked to should take microseconds and in your case I might add cli and sei around it just to keep the other code from screwing it up.

You use these so that during the loop count an interrupt doesn't throw that short count off.

Note that code goes with the hardware setup in that example. With higher resistor-capacitor values the bleed-down might take a long time in Arduino cycles (sometimes 1,000's to 10's of 1,000's or more) and you -don't- want to shut interrupts down that long nor would short interrupts throw such counts off far enough to matter much. So your hardware setup is critical here.

Here is the setup and code for that, note there's different code for different boards too:http://arduino.cc/playground/Code/CapacitiveSensor

Note that it is sensing a finger touch on a bare wire directly onto a pin. He is using the capacitance of a piece of wire (and person when the touch is made) for capacitor and the pullup resistor on the pin (which may vary IIRC by 20%, pullup resistors are not precision parts) for his R-C unit. --- BEWARE! If the person who touches that is carrying a load of static then that could be "all she wrote" for parts of the Arduino. It's a nice little test of concept but would you put that out for regular use? I hope not!

It is a good base for further experiments though and really woke me up as to how fast cap sense might get. You don't have to have a capacitor to have capacitance though I do suggest with low capacitive a 10K or higher resistor would be a good idea. Time constant for filling/bleeding is R x C, resistance x capacitance. Remember that part of the time you empty, part of the time you fill, part of the time you bleed (to digital low, about 1.1V) so it takes longer than just the bleed.