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?
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) {
...
}
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