Sensore capacitivo

Salve a tutti, sono alle prime armi con arduino. Stavo facendo il progetto 13 dello starter kit, quello dove con la libreria CapacitiveSensor accendi un led sfiorando un materiale conduttivo.
Il codice lo ho preso dell'esempio ed è questo:

#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(4,2);
int threshold = 1000;
const int ledPin = 12;
void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}
void loop() {
  long sensorValue = capSensor.capacitiveSensor(30);
  Serial.println(sensorValue);
  if(sensorValue > threshold) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }
  delay(10);
}

Solo che così appena lascio il pezzo conduttivo si spegne il LED.
Come dovrei scrivere il codice in modo che quando tocco il pezzo si accenda il LED, e quando lo ritocco si spenga?

fai con millis un ritardo e spegni il LED dopo.
Ciao Uwe

Non va con il ritardo, a me quello che servirebbe è toccarlo ed avere l'accensione, ritoccarlo e farlo spengere. Tutto ciò senza usare ritardi.

Prova ad ispirarti all'esempio "Debounce" che trovi negli esempi dell'IDE. Dovrebbe essere quello che cerchi, basta togliere la condizione e qualsiasi riferimento al tempo (millis)

Usa prima di tutto un ciclo che eviti di ripetere l'azione per tutto il tempo che tocchi il sensore (la MCU e' molto piu veloce di te', anche se tu tocchi il sensore solo per un momento, nel frattempo lei potrebbe averlo letto un centinaio di volte) ... per quello, puoi usare questo sistema come esempio o modificarlo come ti serve Funzione semplice...aiuto - #7 by Etemenanki - Software - Arduino Forum

poi usi un'altra variabile come "flag" per lo stato del led, e fai due controlli consecutivi con if - else, nel punto in cui metti il codice per accendere il led ... ad esempio:

if
flag = 1 (il led e' acceso), allora spegni il led E metti flag a zero
else
flag = 0 (il led e' spento), allora accendi il led E metti flag ad 1

Ho risolto, creando la variabile "stato", con valore 0 e scrivendo questo nel void loop:

void loop() {
  long sensorValue = capSensor.capacitiveSensor(30);
  Serial.println(sensorValue); 
  
  if(sensorValue > threshold) {
    stato = 1 - stato;
  }
  if (stato == 1) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }
  delay(200);
}