Il pulsante è un componente che collega due punti in un circuito quando viene premuto. Il circuito e il programma che faremo consentirà di accendere un LED quando si preme il pulsante. Dobbiamo collegare tre cavi alla scheda Arduino:
Il primo va da un piedino del pulsante attraverso una resistenza di pull-down di 2,2 KOhm al GND. Il secondo va dall’altro piedino corrispondente del pulsante al +5V. Il terzo si connette al pin digitale 2 che legge lo stato del pulsante. Poi bisogna ancora connettere il led con una resistenza da 330 Ohm al pin digitale 13.
Quando il pulsante è aperto (ossia non premiamo) non vi è alcuna connessione tra i due piedini del pulsante e leggeremo un valore HIGH. Quando il pulsante viene chiuso (ossia premiamo), leggeremo un valore LOW. È inoltre possibile collegare questo circuito in senso opposto, con una resistenza di pull-down in modo da avere l’effetto controria ossia quando viene premuto il pulsante avremo un valore HIGH e viceversa.
Il circuito da realizzare è il seguente:
Dove la resistenza in serie al led è di 330 Ohm mentre la resistenza di pull-down è di 2,2 KOhm.
Passiamo al codice, apriamo il IDE e scriviamo il seguente codice:
#define ledPin 13 //Pin digitale 13 per il led #define buttonPin 2 //Pin digitale 2 per il bottone int buttonState = 0; //Variabile per la lettura dello stato del pin void setup() { pinMode(ledPin, OUTPUT); //Dichiaro il pin 13 come output pinMode(buttonPin, INPUT); //Dichiaro il pin 2 come input } void loop() { buttonState = digitalRead(buttonPin); //Legge il valore del pulsante, ossia il valore del pin 2 //Controllo lo stato del pulsante if (buttonState == HIGH) digitalWrite(ledPin, LOW); //Spengo il led else digitalWrite(ledPin,HIGH); //Accendo il led }
1-digitalRead(): Legge il valore proveniente da un pin digitale. Trattandosi di un pin digitale può leggere solo due valori: HIGH o LOW. La sintassi è la seguente: digitalRead(pin);
2-buttonState == HIGH: Faccio notare la differenza tra scrivere buttonState == HIGH e buttonState = HIGH: il primo confronta se buttonState è uguale al valore HIGH mentre il secondo assegna a buttonState il valore HIGH.
Mi piacerebbe saperne di più sul lato elettronico della faccenda! Cioè il perchè di quei collegamenti e resistenze!
Appena posso metto online una parte dedicata alle’elettronica e ti avviso, nel frattempo puoi leggerti cosa è la resistenza di pull up, se passi il mouse sopra la scritta resistenza di pull up vedi che diventa arancione e se clicci ti manda alla spiegazione
Ho caricato un tutorial su come funzionano i pulsanti. Mentre per quanto riguarda la resistenza da 2,2KOhm serve ad evitare fluttuazioni sul segnale in uscita, ossia quello che noi andiamo a collegare al pin 2 ed evita il corto circuito tra i +5V e GND.
In particolare la resistenza collegata in quel modo, detta pull-down, serve ad avere lo stato logico LOW sul pin2 senza premere il pulsante e viceversa avremo HIGH quando lo si preme.
La resistenza di pull-up invece la mettiamo tra +5V e un piedino del pulsante per avere l’effetto contrario della resistenza di pull down
Vedi schemi nella sezione di elettronica