Uscire da un "if" durante un ciclo

Ragazzi buonasera... sto realizzando un piccolo progettino per hobby su dei led rgb. in pratica per iniziare sto facendo in modo tale che mettendo un interruttore, se lo chiudo, allora parte un gioco automatico con i led....mentre se lo apro, posso regolare i led rgb da solo con i potenziometri che ho messo....bè diciamo che tutto funziona, solo che ho un problema: per quanto riguarda il gioco automatico, sto lavorando con i delay...e quindi se io faccio partire il lampeggio vario (gioco) e durante il ciclo di lampeggi io apro l'interruttore, prima che passi alla modalità regolazione con i potenziometri devo aspettare che tutto il ciclo di lampeggi con i merdosi delay sia finito. potete darmi una mano? faccio un piccolo esempio...senza che mi metto a postare l'intero codice:

#define ledpin 5 
#define interruttore 2 
int statoint = 0;
void setup () {
  pinMode(ledpin,OUTPUT);
  pinMode(interruttore,INPUT);
}

void loop() {
  statoint = digitalRead(interruttore);
  if (statoint == 1){
    digitalWrite(ledpin,HIGH);
    delay(1000);
    digitalWrite(ledpin,LOW);
    delay(1000);
    digitalWrite(ledpin,HIGH);
    delay(1000);
  }else{
    digitalWrite(ledpin,LOW);
    
  }
}

Tu non hai bisogno di uscire da un "if" ma da un "delay". E da un delay non si esce finché non è trascorso il tempo che hai passato alla funzione. Devi usare "millis". Con millis puoi leggere il tempo trascorso e contemporaneamente fare altre cose.
Ti invito alla lettura di questo articolo che ti spiega come fare quel che ti serve.

grazieeee....ci sono riuscito...devo solo capire come funziona bene la regolazione dei tempi con il millis...:wink: grazie

Ciao Uwe