#include SoftwareSerial mySerial(1, 0); const int capR = 9; const int capS = 8; const int ledPin = 7; const int buttonPin = 10; const int potPin = A1; int i; unsigned int x, y; float accum, fout, fval = 0.001; long threshold = 0; long initialThreshold = 0; int value; void setup() { CLKPR = (1 << CLKPCE); CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0); mySerial.begin(9600); mySerial.println("Setting Up"); pinMode (ledPin, OUTPUT); pinMode (buttonPin, INPUT); pinMode (capR, INPUT); pinMode (capS, OUTPUT); for (short i = 0; i < 10; i++) { long max; y = 0; x = 0; for (short i = 0; i < 4; i++) { digitalWrite(capS, HIGH); while (!digitalRead(capR)) { x++; } delay(1); digitalWrite(capS, LOW); while(digitalRead(capR)) { y++; } delay(1); } max = (x > y ? x : y); threshold = (threshold > max ? threshold : max); } mySerial.println("Threshold: "); mySerial.println(threshold); mySerial.println(initialThreshold); mySerial.println("Ready to Sense"); } void loop(){ mySerial.println('a'); y = 0; x = 0; value = analogRead(potPin); mySerial.println("\nValue: "); mySerial.println(value); mySerial.println("\nNew Threshold: "); mySerial.println(threshold); for (short i = 0; i < 4; i++) { digitalWrite(capS, HIGH); while (digitalRead(capR) == LOW) { x++; } delay(1); digitalWrite(capS, LOW) ; while (digitalRead(capR) == HIGH) { y++; } delay(1); fout = (fval * (float)x) + ((1-fval) * accum); accum = fout; } if (x > threshold && y > threshold) { mySerial.println("Tocca"); digitalWrite(ledPin, HIGH); } else { mySerial.println("Non tocca"); digitalWrite(ledPin, LOW); } { mySerial.println("\nCarica: "); mySerial.println(x); mySerial.println(" / Sarica: "); mySerial.println(y); mySerial.println(); delay(1500); } }