Semaforo intelligente

Sto facendo un plastico di un semaforo intelligente con sensori sulle vie, per variare il tempo del verde in funzione del traffico. Una cosa tutto sommato banale. Ho un solo problema, come posso interrogare lo stato del pulsante a disposizione dei pedoni anche durante la temporizzazione dei semafori? Il problema è che se viene premuta la richiesta durante la temporizzazione e subito rilasciata, il programma non la "vede".
Posso fare una sub-routine per la temporizzazione all'interno della quale interrogare continuamente il pin? Quacuno ha un esempio di sintassi da mostrarmi?

Grazie per la cortesia.

Non devi usare delay ma fare un controllo usando millis, che conta il numero di millisecondi dall'avvio dell'Arduino.
All'interno del ciclo che usi, controlli la pressione del pulsante.

Tipo

tempo = millis()+temporizzazione;
do {
    if (digitalRead(pulsante) == HIGH) {
        pressione = 1;
        break;
    }
} while (millis() < tempo);
if (pressione == 1) {
 ...
}

Posso fare una sub-routine per la temporizzazione all'interno della quale interrogare continuamente il pin?

niente multi-threading, e considerando l'esperienza che dimostri direi che è più un calcio nelle balle che altro

segui il consiglio di leo

Grazie a entrambi, mi avete illuminato la via... trattandosi di semafori... :))))

Dorsai:
Grazie a entrambi, mi avete illuminato la via... trattandosi di semafori... :))))

:astonished:

Scusate se torno sull'argomento ma riflettendoci mi è rimasto un dubbio.
Poichè le temporizzazioni sono molte, non sarebbe meglio usare una funzione a cui passare i millisecondi di pausa e da cui ricevere l'informazione della pressione del tasto di richiesta del verde per i pedoni? Risparmierei memoria? Usavo le funzioni in turbo Pascal e con il C ho dubbi sulla sintassi e sulle modalità di passaggio dei dati alla funzione.
Grazie ancora :blush: