Pulsante

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.

Be Sociable, Share!

3 Comments

  1. Stefano scrive:

    Mi piacerebbe saperne di più sul lato elettronico della faccenda! Cioè il perchè di quei collegamenti e resistenze!

  2. ArduinoTutorial scrive:

    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

  3. ArduinoTutorial scrive:

    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

Leave a Reply

You must be logged in to post a comment.