Arduino (3) – Accendiamo e spegnamo la luce
Nell’ultimo articolo abbiamo descritto come far lampeggiare un led, utilizzando la scheda Arduino come un “costoso interruttore”. Adesso proviamo ad aggiungere un interruttore per accendere e spegnere il led. Per realizzare un interruttore basta tagliare il filo che chiude un circuito: quando i fili sono separati, la corrente non passa; quando i fili sono messi in contatto, il circuito si chiude, la corrente passa e circola nel circuito. Ci sono interruttori in svariate forme, noi utilizzaremo l’interruttore incluso nel kit:

Con un interruttore possiamo realizzare un input digitale, ovvero sul PIN in ingresso possiamo leggere un valore logico basso oppure alto, a seconda dello stato dell’interruttore. Come si può immaginare, quando l’interruttore è aperto, ovvero non c’è una connessione, si leggerà il valore logico basso; quando l’interruttore viene chiuso, si leggerà il valore logico alto.

Lo schema qui riportato è quello da applicare al PIN dal quale verrà letto il valore logico, e il resistore inserito nel circuito, serve a portare al valore logico basso l’ingresso quando l’interruttore è aperto, evitando di avere valori flottanti. Il PIN dovrà essere settato come INPUT, mediante pinMode(), e la lettura deve avvenire con digitalRead(), poichè siamo in presenza di un input digitale. Mentre l’interruttore rimane chiuso, l’uscita su cui è collegato il led deve diventare alta.
Il circuito sarà costituito da due parti: la parte relativa al led, facilmente riproducibile; la parte relativa al pulsante, dove bisogna andare a replicare lo schema della precedente figura.

L’interruttore ha due piedini sempre connessi e altri due da connettere mediante la pressione del pulsante. Come si vede uno di questi ultimi è collegato all’alimentazione e l’altro è collegato a terra tramite il resistore. Tra il resistore e l’interruttore viene collegato il PIN2, ovvero quello da cui il nostro microcontrollore andrà a leggere l’ingresso digitale.
Lo sketch per questo esperimento è il seguente:
int led_pin = 8;
int btn_pin = 2;
void setup() {
pinMode(led_pin, OUTPUT);
pinMode(btn_pin, INPUT);
}
void loop()
{
int in = digitalRead(btn_pin);
if (in == LOW)
{
digitalWrite(led_pin, LOW);
}
else
{
digitalWrite(led_pin, HIGH);
}
}
In questo sketch incontriamo il costrutto decisionale if … else … il quale permette di scegliere tra due o più alternative (mediante “else if“), a seconda se è verificata o meno la condizione logica espressa tra parentesi. Se l’input letto è alto, spegne il led, altrimenti se è alto (l’unica altra alternativa), accende il led, proprio come fatto nel precedente articolo. Alla luce di quanto detto: cosa fa il seguente sketch?
int led_pin = 8;
int btn_pin = 2;
int stato = LOW;
void setup() {
pinMode(led_pin, OUTPUT);
pinMode(btn_pin, INPUT);
}
void loop()
{
int in = digitalRead(btn_pin);
if (in == HIGH)
{
if (stato == LOW)
{
stato = HIGH;
}
else
{
stato = LOW;
}
}
digitalWrite(led_pin, stato);
}
Risposta: premuto il tasto, il led cambia da acceso a spento e viceversa, restando in quello stato fino alla successiva pressione.


[...] un pulsante a quattro piedini (vedi Articolo) [...]
Arduino (Esperimento) – Calcolo del tempo di scarica di un condensatore « Il blog di Nicola Amatucci
12 Agosto 2009 alle 23:51