GUIDA 5: Arduino, utilizzo di un pulsante

Vediamo come collegare un pulsante a un circuito, permettendo all’utente, che preme il pulsante, di associare lo stato logico “alto” a un pin digitale a cui è collegato un LED. Il circuito è semplice: collega il LED come hai visto nelle precedenti guide, e il pulsante tra positivo e massa, con una resistenza da 10k. Questa va inserita per evitare danni alla scheda; infatti, quando il pulsante viene premuto, lascia passare corrente e, se si mettono in contatto un positivo e massa, avviene un corto circuito. Devi inoltre collegare il pulsante a un pin digitale di Arduino, per permettergli di leggere lo stato del pulsante. Soffermiamoci un attimo sul funzionamento pratico del pulsante. Nell’immagine puoi vedere come avviene il contatto elettrico:

pulsante-dettaglio

Alla pressione del pulsante, quindi, si mettono in contatto le due “linee”. Per questo è indifferente collegare un cavo nella parte superiore piuttosto che in quella inferiore, purchè sia sulla stessa “linea” (per linea intendo le due verticali del disegno, formate da una parte tratteggiata).

Ecco lo schema elettronico:

pulsante

Come puoi vedere ho collegato il pulsante tra il positivo e, tramite la resistenza al negativo. Ho poi collegato un cavo tra pin digitale 8 e il pin del pulsante collegato a massa. Quando Arduino riceve tensione su questo pin, significa che il pulsante è premuto. Ti ricordo che ho utilizzato un pin digitale perchè un pulsante può avere soltanto due stati logici: HIGH o LOW.

Ora analizziamo il codice. Definisci delle variabili di tipo intero: “led”, “pulsante” cui associamo i pin a cui il pulsante e il LED sono collegati, e “stato_pulsante”, a cui associamo “0”. Le prime due sono costanti e servono per semplificare il lavoro di programmazione: per richiamare un pin all’interno del codice ti basterà scrivere il nome della variabile a cui esso è associato. Nel setup, inizializza il pin “led” come output e “pulsante” come input. Nel loop, dopo avere impostato lo stato logico “basso” per il led, attribuisci alla variabile “stato_pulsnte” la lettura dello stato del pin collegato al pulsante. Se il pulsante è premuto, la variabile assume il valore “1”, se questo non accade, essa avrà il valore “0”. Infine dovrai comunicare ad Arduino: “se lo stato logico della variabile “stato_pulsante” è alto, accendi il led”. Per farlo utilizza l’operatore logico “If”. Nel linguaggio di Arduino la sintassi di if è:

if(condizione){
cosa eseguire se la condizione è vera
}

Ecco quindi il codice sopra spiegato:

int led=8;
int pulsante=9;
int stato_pulsante=0;

void setup(){
pinMode(led,OUTPUT);
pinMode(pulsante,INPUT);
}
void loop(){
digitalWrite(led, LOW);
stato_pulsante=digitalRead(pulsante);
if(stato_pulsante==1){
digitalWrite(led,HIGH);
}
}

In questo caso la condizione da verificare affinché possano essere eseguite le istruzioni dell’if è un’operazione di confronto, che nel linguaggio di Arduino si esegue con il simbolo: ==. Pertanto, scrivere: if(stato_pulsante=HIGH){, non è corretto. Il simbolo = viene utilizzato solo per assegnare un valore a una variabile, come in: stato_pulsante=digitalRead(pulsante);.

Nella prossimo articolo vediamo lo stesso circuito, cambiando il codice in modo da memorizzare lo stato del led. Sarà quindi sufficiente premere il pulsante per un istante e il led si accenderà. Questo stato si conserverà fino a quando il pulsante non verrà premuto nuovamente.

4 Risposte a “GUIDA 5: Arduino, utilizzo di un pulsante”

  1. Anche in questo caso mi permetto un piccolo suggerimento. Nel setup, visto che hai definito la costante, puoi scrivere :
    pinmode(pulsante, INPUT)

    Poi nell’if del loop puoi aggiungere un else e spegnere il led se il pulsante non è premuto.
    Ciao!

    1. Ciao, grazie per il suggerimento! Nel setup ho corretto, in quanto mi ero probabilmente distratto scrivendo il codice nell’articolo. Avrei potuto inserire un else nel loop, ma, avendo all’inizio assegnato lo stato basso al led, il circuito funziona ugualmente. Inoltre, avendo già introdotto, in questa guida l’if, ho preferito introdurre l’else nella successiva, che ho appena caricato :).
      Ciao e buon Natale!

  2. Good writeup, I am normal visitor of ones blog, maintain up the excellent operate, and It’s going to be a regular visitor for a lengthy time. aaekkfdkeagbaddc

  3. I actually got into this post. I located it to be fascinating and loaded with exclusive points of interest. I like to read material that makes me believe. Thank you for writing this fantastic content. ecdcecebcakkbekb

I commenti sono chiusi.