[Risolto]semaforo con fotocellule e conto alla rovescia

Modifichi il loop così:

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) {
    //  ....sensore premuto per tutto l'intervallo
  } else {{
    //  ....dito staccato prima del tempo
  }

}