il problema del capSense è che non è proprio come un pulsante, ovvero tu pensi di premere una volta ma non sai quante volte il programma va a leggere quel tocco, dovresti controllare che sia rilasciato il "contatto" sul capSense prima di andare a leggere se è premuto di nuovo, ma può funzionare anche come hai fatto tu, questa è solo un'avertenza...
comunque puoi fare che la variabile non viene impostata ogni volta, ma mantiene il valore, tipo così:
#include <CapSense.h>
#define LED 11
CapSense cs_4_2 = CapSense(4,2);
int i = 0;
int valoreFade = 0;
void setup()
{
pinMode(LED,OUTPUT);
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
}
void loop()
{
long total = cs_4_2.capSense(30);
delay(15);
if (total >60)
{
i++;
}
switch (i)
{
case 1:
for (valoreFade = 0 ; valoreFade < 52; valoreFade++) {
analogWrite(LED, valoreFade);
delay(100);
}
break;
case 2:
for (valoreFade = valoreFade ; valoreFade < 103; valoreFade++) {
analogWrite(LED, valoreFade);
delay(100);
}
break;
case 3:
for (valoreFade = valoreFade ; valoreFade < 154; valoreFade++) {
analogWrite(LED, valoreFade);
delay(10);
}
break;
case 4:
for (valoreFade = valoreFade ; valoreFade < 205; valoreFade++) {
analogWrite(LED, valoreFade);
delay(10);
}
break;
case 5:
for (valoreFade = valoreFade ; valoreFade < 256; valoreFade++) {
analogWrite(LED, valoreFade);
delay(10);
}
break;
case 6:
for(valoreFade = valoreFade ; valoreFade > -1; valoreFade--) {
analogWrite(LED, valoreFade);
delay(15);
}
i=0;
break;
}
}
così si ricorda il valore precedente che aveva assunto e riparte da lì