Il semaforo unidirezionale con commutazione fra comportamento normale e lampeggiante

Mediante un pulsante si vuol passare da un funzionamento che coinvolga tre LED (rosso, giallo e verde) ad uno lampeggiante del LED giallo.  Ci serviremo di una variabile in cui salvare lo stato del pulsante con cui determinare la commutazione.

Il semaforo unidirezionale con commutazione fra comportamento normale e lampeggiante html 8ed402a51846228f

 

Il codice:

 

#define red1 9

#define yel1 10

#define gre1 11

#define puls 2

boolean statoP = 0;

 

void setup() {

pinMode(red1, OUTPUT);

pinMode(yel1, OUTPUT);

pinMode(gre1, OUTPUT);

pinMode(puls, INPUT);

}

 

void loop() {

if (digitalRead(puls) == HIGH) statoP = !statoP ;

delay(250);

if (statoP == 1) {

digitalWrite(yel1, LOW);

digitalWrite(red1, LOW);

digitalWrite(gre1, HIGH);

delay(6000);

digitalWrite(gre1, LOW);

digitalWrite(yel1, HIGH);

delay(1500);

digitalWrite(yel1, LOW);

digitalWrite(gre1, LOW);

digitalWrite(red1, HIGH);

delay(6000);

}

if (statoP == 0) {

digitalWrite(red1, LOW);

digitalWrite(gre1, LOW);

digitalWrite(yel1, HIGH);

delay(1000);

digitalWrite(yel1, LOW);

delay(1000);

}

}

 


 http://sistemisds.altervista.org/

   Si può rendere più frendly il codice con l’introduzione di due funzioni: una per il funzionamento normale, l’altro per quello lampeggiante.

   Per la presenza della funzione delay() la commutazione avviene se il pulsante viene tenuto premuto alla fine della fase normale o lampeggiante, cioè durante l’accensione del rosso nel primo caso e del giallo nel secondo. In definitiva, conviene tenere premuto il pulsante finché non avviene la commutazione.