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