Pages: [1]   Go Down
Author Topic: Semaforo intelligente  (Read 590 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Code:
tempo = millis()+temporizzazione;
do {
    if (digitalRead(pulsante) == HIGH) {
        pressione = 1;
        break;
    }
} while (millis() < tempo);
if (pressione == 1) {
 ...
}
« Last Edit: April 26, 2011, 02:57:21 pm by leo72 » Logged


0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10473
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
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
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22811
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

 smiley-eek
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 19
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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   smiley-red
Logged

Pages: [1]   Go Up
Jump to: