pulsante che si accita dopo 3 pressioni

Anche così dovrebbe funzionare. Fammi sapere :slight_smile:

unsigned long t1=0;
byte pPrec=1;
byte n=0;

void setup()
{
pinMode(13,OUTPUT);      // Inizializzazione I/O 13 in uscita:
pinMode(2,INPUT_PULLUP); // Inizializzazione I/O 2 in entrata:
}
 // N.B.: per quanto già detto, il pulsante deve essere collegato verso massa, perciò
 // adotto la logica negata (pulsante premuto=0).
 
void loop()
{  // Se il pulsante viene premuto (e non lo era), incrementa n; segna che è stato premuto (pPrec=0);
  // se è la prima volta (n era 0 ed è stato incrementato a 1), prende il tempo:
if(digitalRead(2)==LOW) 
  {if(pPrec==1) {n+=1; pPrec=0; if(n==1) t1=millis();}}
else pPrec=1; // Se il pulsante viene lasciato, se lo segna (pPrec=1)

if(n==3)  // ACCESO!
 {
 digitalWrite(13,HIGH);
 delay(2000);
 digitalWrite(13,LOW);
 }
if(n==3 || (n>0 && millis()-t1>2000)) // Se il pulsante è stato premuto 3 volte,
 {       // oppure è stato premuto 1 o 2 volte ma è scaduto il tempo, azzera n.
 n=0;   
 while(digitalRead(2)==LOW); // Se il pulsante non è stato lasciato, non va avanti.
 }
}