In un articolo precedente, abbiamo visto come collegare un pulsante ad Arduino (qui il tutorial), in quel tutorial però il comando da eseguire alla pressione del pulsante, l’accensione di un led, veniva fatto finché il pulsante era premuto, al rilascio di questo, il led si spegneva.
Se volessimo lasciare il led acceso finché non si ripreme il pulsante, occorre dare uno stato a questo, quindi dovremmo dire ad Arduino di memorizzare la posizione di questo finché non viene ripremuto; in questo tutorial vedremo come fare un cambio stato on-off per il led,
Materiale Necessario
Se siete interessati al materiale, cliccate su questo e sarete indirizzati alla pagina Amazon
in una lezione successiva vedremo come dare più funzioni allo stesso pulsante, facendo sempre un esempio con il led, potremmo fare una pressione led acceso al 50% di luminosità, due pressioni led acceso al 100% di luminosità, tre pressioni led spento, ovviamente le possibilità sono numerose, ma ne parleremo più avanti.
Montiamo la nostra breadboard con un pulsante, la resistenza da 10 KΩ, un led e la sua resistenza ed ovviamente il nostro Arduino.
Iniziamo a scrivere lo sketch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
/*HOBBYEIDDE Pulsante con stato hobbyeidee.altervista.org */ #define pulsante 4 #define led 10 int stato = LOW; //variabile che memorizza lo stato del pulsante void setup(){ pinMode (led, OUTPUT); pinMode(pulsante, INPUT); } void loop(){ if(digitalRead(pulsante) == HIGH){ stato = !stato; delay(200); } if(stato==HIGH){ digitalWrite(led, HIGH); } else{ digitalWrite(led, LOW); } } |
Lo sketch è molto semplice, utilizza una variabile di nome “stato”, in base al suo valore il led sarà acceso o spento
1 2 3 4 |
if(digitalRead(pulsante) == HIGH){ stato = !stato; delay(200); } |
Analizziamo il loop, il primo if dice ad Arduino di lèggerere il pulsante, se questo è HIGH, cioè premuto, nella variabile stato, inseriremo un valore opposto a quello attuale, quindi se stato è HIGH inseriremo LOW e viceversa.
Inseriamo un delay di 200ms così da evitare che Arduino legga dei disturbi.
1 2 3 4 5 6 |
if(stato==HIGH){ digitalWrite(led, HIGH); } else{ digitalWrite(led, LOW); } |
l’if successivo, dice ad Arduino se accendere o spegnere il led, in base al valore della variabile,
Quindi per un valore HIGH avremo il led acceso, per valori LOW, avremo il led spento
Nella pagina sono presenti link di affiliazione su cui si ottiene una piccola quota dei ricavi, senza variazioni dei prezzi.