consigli sketch centralina irrigazione

ciao, ho provato a migliorare un po il codice che gestisce l'irrigazione automatica. adesso ho implementato il sensore pioggia con la variabile start_irrigazione (uguale a 2 se è disattivato il sensore dal menù del display, a 1 se è attivato dal menù e il contatto è chiuso e a 0 se il sensore è aperto), poi sulla gestione degli orari ho usato i >= e <= per gestire l'intervallo tra i 2 tempi, così se metto OFF da menù, poi riportando in ON continua il ciclo(come uno stato di pausa). vorrei avere 1 o 2 secondi di riposo tra l'irrigazione da una zona all' altra, avevo messo un delay di 1 secondo ma, non so perchè, mi rallentava l'uso del menù.ho provato con il millis() tra una zona e l'altra con il codice così composto: dopo il digitalWrite (ev_zona1,LOW) avevo messo
ritardo=millis()+2000;
if(ritardo<millis() && ritardo>0) {
ora_irri2=ora;
minuti_irri2=now.minute(); }
ma non funziona, l'idea era quelladi ritardare la lettura dell'ora di 2 secondi e quindi la seconda zona dovrebbe essere partita 2 secondi dopo ma purtroppo non è così. avrei bisogno di un consiglio su questo passaggio. ciao e grazie

if(start_irrigazione==1 || start_irrigazione==2)  {
    
   if((ora>=ora_start_irri && now.minute()>=minuti_start_irri) && (ora<=ora_stop_irri1 && now.minute()<=minuti_stop_irri1))
    {
      if(tempo_irri1 !=0)  {
      digitalWrite(ev_zona1,HIGH);
      stato_ciclo=1;
      stato_sosta=1;
    }
    else  {
      digitalWrite(ev_zona1,LOW);
      stato_ciclo=10;
    }
    }
      if((stato_ciclo==1 || stato_ciclo==10) && now.minute()==minuti_stop_irri1)    {
        digitalWrite(ev_zona1,LOW);
        stato_ciclo=0;
        stato_sosta=0;
        ora_irri2=ora;
        minuti_irri2=now.minute();
        
    } 
    
      if((ora>=ora_irri2 && now.minute()>=minuti_irri2) && (ora<=ora_stop_irri2 && now.minute()<=minuti_stop_irri2))  {
        if(tempo_irri2 !=0)  {
      digitalWrite(ev_zona2,HIGH);
      stato_ciclo=2;
      stato_sosta=2;
    }
    else  {
      digitalWrite(ev_zona2,LOW);
      stato_ciclo=11;
    }
    }

      if((stato_ciclo==2 || stato_ciclo==11) && now.minute()==minuti_stop_irri2)  {
        digitalWrite(ev_zona2,LOW);
        ora_irri3=ora;
        minuti_irri3=now.minute();
        stato_ciclo=0;
        stato_sosta=0;
      }
      if((ora>=ora_irri3 && now.minute()>=minuti_irri3) && (ora<=ora_stop_irri3 && now.minute()<=minuti_stop_irri3))  {
        if(tempo_irri3 !=0)  {
      digitalWrite(ev_zona3,HIGH);
      stato_ciclo=3;
      stato_fermata=0;
    }
    else  {
      digitalWrite(ev_zona3,LOW);
      stato_ciclo=12;
    }
    }
      if((stato_ciclo==3 || stato_ciclo==12)&& now.minute()==minuti_stop_irri3)  {
        digitalWrite(ev_zona3,LOW);
        
        ora_irri4=now.hour();
        minuti_irri4=now.minute();
        stato_ciclo=0;
        stato_sosta=0;
      }
      if(now.hour()==ora_irri4 && now.minute()==minuti_irri4)  {
      if(tempo_irri4 !=0)  {
      digitalWrite(ev_zona4,HIGH);
      stato_ciclo=4;
      stato_sosta=0;
      stato_fermata=0;
    }
    else  {
      digitalWrite(ev_zona4,LOW);
      stato_ciclo=13;
    }
      }
      if((stato_ciclo==4 || stato_ciclo==13) && now.minute()==minuti_stop_irri4)  {
        digitalWrite(ev_zona4,LOW);
        
        ora_irri5=now.hour();
        minuti_irri5=now.minute();
        stato_ciclo=0;
        stato_sosta=0;
      }
        

    
 switch(stato_sosta)  {
case 1:

  if(stato_canc_grande==1 || stato_canc_piccolo==1)  {
    stato_fermata=1;
    minuti_fermata=now.minute();
    secondi_fermata=now.second();
  }
  if(stato_fermata==1)  {
    
    digitalWrite(ev_zona1,LOW);
  }
  if(stato_ciclo==1 && now.minute() >= minuti_fermata + 2 && now.second()==secondi_fermata)  {
    digitalWrite(ev_zona1,HIGH);
    minuti_fermata=0;
    stato_fermata=0;
  }
  break;
  case 2:
  if(stato_canc_grande==1 || stato_canc_piccolo==1)  {
    stato_fermata=1;
    minuti_fermata=now.minute();
    secondi_fermata=now.second();
  }
  if(stato_fermata==1)  {
    
    digitalWrite(ev_zona2,LOW);
  }
  if(stato_ciclo==2 && now.minute() >= minuti_fermata + 2 && now.second()==secondi_fermata)  {
    digitalWrite(ev_zona2,HIGH);
    minuti_fermata=0;
    stato_fermata=0;
  }
  break;
 }
  }
 if(start_irrigazione==0)  {
   digitalWrite(ev_zona1,LOW);
   digitalWrite(ev_zona2,LOW);
   digitalWrite(ev_zona3,LOW);
   digitalWrite(ev_zona3,LOW);
  stato_irrigazione=6;
 }
}