Questo esempio mostra come monitorare lo stato di un pulsante realizzando una comunicazione seriale tra Arduino o Genuino ed il vostro computer tramite porta USB.
Materiale utilizzato
- scheda Arduino o Genuino
- un pulsante
- una resistenza da 10k ohm
- cavi di collegamento
- una breadboard
Circuito
Collegare tre fili ad Arduino. I primi due, rosso e nero, portano l’alimentazione alla breadboard per poter accedere alla 5V e alla massa. Il terzo va dal pin digital 2 ad un pin del pulsante. Lo stesso pin del pulsante va collegato a massa tramite una resistenza di pull-down (10k ohm). L’altro pin del pulsante invece va collegato alla tensione 5V dell’alimentazione.
I pulsanti quando vengono premuti mettono in collegamento i due punti del circuito collegati ai loro pin. Quando il pulsante non è premuto (aperto) non c’è collegamento tra i due pin e quindi Arduino vedrà un collegamento a massa (leggi LOW o 0) tramite la resistenza di pull-down. Quando invece il pulsante sarà premuto (chiuso), la connessione tra i suoi due pin farà in modo che Arduino vedrà la tensione di 5V e quindi lo interpreterà come stato logico alto (HIGH o 1).
Se scollegate il pin digitale 2 di Arduino dal circuito non ci sarà più un collegamento stabile ad uno dei due stati e quindi otterrete letture casuali che oscilleranno da uno stato all’altro; per questa ragione si è aggiunta la resistenza di pull-down al circuito.
Schema elettrico
Codice
Nel programma sotto riportato, la prima cosa che viene fatta è inizializzare la comunicazione seriale a 9600 bit per secondo tra la vostra scheda ed il computer:
Serial.begin(9600);
Poi viene inzializzato il pin digitale 2 per leggere segnali di input provenienti dal pulsante:
pinMode(2,INPUT);
Terminata l’inizializzazione andremo ad eseguire il loop principale del codice. Come detto prima quando il pulsante è premuto, la tensione di 5 volt attraverserà il circuito, e quando invece è lasciato aperto, l’ingresso è collegato a massa tramite la resistenza da 10k ohm. Trattandosi di un input digitale possiamo discriminare solo tra due stati possibili, lo stato ON (visto dall’Arduino come un “1”, o HIGH) e lo stato OFF (visto come uno “0”, o LOW).
Quindi la prima cosa da fare nel loop principale è predisporre una variabile che contenga l’informazione proveniente dal pulsante. Dato che tale informazione sarà solamente un “1” oppure uno “0”, si può utilizzare il tipo di dato int
. Chiameremo questa variabile sensorValue
, e la setteremo uguale a ciò che vediamo sul pin digitale 2:
int sensorValue = digitalRead(2);
Quando la scheda avrà letto questo input lo invierà alla porta seriale verso il computer come valore decimale:
Serial.println(sensorValue);
Ora se aprite la funzione Serial Monitor del programma Arduino Software (IDE), vedrete arrivare una stringa di “0” e di “1” a seconda che il pulsante sia aperto o chiuso.