[Risolto]semaforo con fotocellule e conto alla rovescia

GRAZIE GRAZIE GRAZIE MILLE per l enorme aiuto che mi hai, da solo non credo proprio che c e l avrei fatta,
funziona benissimo

se potesse tornare utile ad altri utenti:

 #define verde1 13
 #define rosso1 12
 #define verde2 11
 #define rosso2 10
 #define pulsante 7
 
 int val = 0; // conserva lo stato del pin di input
 
 void setup(){
   pinMode (verde1, OUTPUT);
   pinMode (rosso1,OUTPUT);
   pinMode (verde2,OUTPUT);
   pinMode (rosso2,OUTPUT);
   pinMode (pulsante, INPUT);
   digitalWrite(pulsante,HIGH);
 }
 

void loop() {
  unsigned long uscita_programmata = millis() + 3000; //3 secondi
  boolean pressione_continua = true;
  do {
    if (digitalRead(pulsante) == HIGH) { //oppure LOW, dipende dalla logica di funzionamento del tuo pulsante
      pressione_continua = false;
      break;
    }
  } while (millis() <= uscita_programmata);
  if (pressione_continua == true) {
     digitalWrite(verde2, LOW);
     digitalWrite(rosso2, HIGH);
     digitalWrite(rosso1, HIGH);
     delay (5000);
     digitalWrite(verde1, HIGH);
     digitalWrite(rosso2,HIGH);
     digitalWrite(rosso1,LOW);
     delay(8000);
    //  ....sensore premuto per tutto l'intervallo
  } else {digitalWrite(rosso1,HIGH);
     digitalWrite(verde2,HIGH);
     digitalWrite(verde1,LOW);
     digitalWrite(rosso2, LOW);
    //  ....dito staccato prima del tempo
  }
}