Occorrente:
Arduino Uno
Breadboard
Led
Pulsante
Resistenza da 220 Ohm o superiore, da collegare al Led
Resistenza da 10 KOhm o superiore, da collegare al pulsante
Cavi Jumper
Costruire il seguente circuito:
Si può notare che il Pin digitale 5 di Arduino è collegato, attraverso la resistenza, tra il pulsante ed il - della breadboard. Ciò è necessario per portare a '0' il valore del Pin digitale quando Arduino andrà a leggere, con il comando 'digitalRead', il suo stato, che altrimenti risulterebbe fluttuante. Quando invece il pulsante viene premuto, la corrente può circolare tra il '+' ed in maggior misura verso il Pin 5, che riceve il segnale elettrico interpretato da Arduino, in lettura, con lo stato '1'. Solo una trascurabile corrente fluirà verso il '-' della breadboard a causa delle notevole resistenza inserita.
Per quanto riguarda il codice, 'digitalRead' legge lo stato del Pin 5 e se questo è '1' impostiamo il codice in modo che accenda il Led, se è '0' invece lo spegna.
Al contempo viene inviato al monitor seriale lo stato del led.
Si può leggere con attenzione il seguente codice, copiarlo e salvarlo nell'IDE, e caricarlo su Arduino.
Se tutto è stato fatto correttamente, premendo il pulsante, si accende il Led, altrimenti il Led rimane spento. Sarà possibile leggere lo stato del pulsante 'premuto/non premuto' visualizzando il Monitor seriale dell'IDE.
Adesso, per esercitarsi, si propone di eseguire, uno per volta, i seguenti passi:
Riscrivi il codice senza i commenti e senza incollare le istruzioni, per esercitarsi con la sintassi del linguaggio
Imposta l'accensione del Led con il pulsante non premuto e lo spegnimento con il tasto premuto.
OSSERVAZIONE: si può notare anche che, poiché il digitalRead può leggere solo due valori, 1 oppure 0, possiamo usare più propriamente la struttura decisionale IF ...... ELSE ........... che significa "se (if) il pin 5 è impostato ad 1 allora accendi il led, altrimenti (else) spegni il led in quanto è ovvio che se non è 1 deve essere necessariamente 0.
Cioè nello sketch si possono sostiuire i due if con le seguenti istruzioni
if ( digitalRead(pinPuls) == 0) {
digitalWrite (pinLed, HIGH);
Serial.println("led acceso");
}
else { digitalWrite (pinLed, LOW);
Serial.println("led spento");
}
I più volenterosi potranno apportare un'ulteriore modifica, che accenda il Led premendo una prima volta il pulsante, e spegnendo il Led premendo una seconda volta il pulsante. Sarà necessario utilizzare una variabile booleana di comodo, che si può chiamare 'stato' o altro nome a piacere, che memorizzi lo stato '0' o '1' del Led e che venga modificata, negando lo stato della variabile, ad ogni pressione del pulsante, come avvenuto nel progetto 3.