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

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.

arduino esempio pulsante