Aiuto Bug Programma accensione led Bottone

Buon giorno ragazzi volevo chiedervi un consiglio sul come risolvere questo piccolo bug. Ho creato questo codice per gestire l'accensione del led in funzione del mio pigiare il tasto. tutto fila liscio fino a quando dovrò spegnere il led allo stato=0 e per far cio devo necessariamente premere il tasto proprio quando Arduino sta leggendo il pin 7 e questo mi porta a premere ripetutamente più volte il tasto prima di riuscire a cogliere il momento giusto...Questo è il codice:

int digitalPin;
int stato=0;
void setup(){
  pinMode(13,OUTPUT);
  pinMode(7,INPUT);
  Serial.begin(9600);
}
void loop(){
  digitalPin=digitalRead(7);
  if ((digitalPin==HIGH) and (stato==0)){ //se il tasto è premuto e lo stato iniziale era uguale a 0 allora lo stato diventa 1(alla prima pressione)
     stato=1;
     delay(1000);
  }

  else if((digitalPin==HIGH) and (stato==1)){ //se il tasto si trova nella condizione appena creata e cioè è stato premuto e lo stato =1 allora stato =0
     stato=2;
     delay(1000);
  }  
  
  else if ((digitalPin==HIGH) and (stato==2)){//allora se lo stato= 2 e il prin è stato premuto allora si spegnerà
    stato=0;
    delay(1000);
  }
  
   if(stato==0){
   digitalWrite(13,LOW);
   Serial.println("Pin Spento");
   
   }
   
   else if (stato==1){
   digitalWrite(13,HIGH);
   Serial.println("Pin Acceso Per 1 SecondO");
   delay(1000);
   digitalWrite(13,LOW);
   Serial.println("Pin Spento Per 1 SecondO");
   delay(1000);
   }
   
   else if (stato==2){
     digitalWrite(13,HIGH);
   Serial.println("Pin Acceso Per 4 SecondI");
   delay(4000);
   digitalWrite(13,LOW);
   Serial.println("Pin Spento Per 4 SecondI"); //vi è il bug secondo il quale per raggiungere lo stato =0 e cioè per spegnere il led bisgona per forza prendere il punto giusto in cui Arduino legge il pin7
   delay(4000);
   }
}

Sarò Felice di qualunque aiuto..Grazie in anticipo!!!

Se usi la delay() fermi il programma e rendi tutto più difficile ... ... devi utilizzare la funzione millis() e fare delle comparazioni :)

Per delle belle spiegazioni sulla millis() qui : http://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/ ;)

Guglielmo