martedì 27 maggio 2014

Come collegare, in modo corretto, un pulsante ad Arduino

Oggi ad aspettando il bus, vi parlerò di una cosa molto semplice: come collegare un pulsante ad Arduino. E cosa c'e' di difficile? Nulla. Purtroppo per errori di programmazione o per semplice fretta si posso fare danni irreparabili ad Arduino. Quindi, meglio prevenire che curare! :-)

Come collegare un pulsante ad Arduino di Paolo Luongo
Come collegare un pulsante ad Arduino di Paolo Luongo






Lo schema, che vi propongo, è questo. Servono 1 resistore da 4,7 KOhm (Giallo, Viola, Rosso, Oro), un condensatore da 100nF e un'altro resistore da 1 KOhm (Marrone, Nero, Rosso, Oro - vedi articolo per leggere i colori dei resistori) e un pulsante.
Il condensatore l'ho aggiunto per limitare l'effetto rimbalzo del contatto (debouncing) di ogni pulsante. Nel momento dell'attivazione del pulsante il contatto si apre e si chiude velocemente fino a stabilizzarsi in chiusura. Questo problema crea delle oscillazioni nella lettura dello stato del pulsante che si risolvono col software. I più pigri, come me, preferiscono la soluzione Hardware con una capacità di 47nF o 100nF, dipende dai gusti (non è così, ma non è il caso di approfondire ora).

Collegando in questo modo il pulsante avremo uno zero logico (0 volt) alla pressione del pulsante e un uno logico (5 Volt) al suo rilascio.

Schema di collegamento del pulsante ad Arduino UNO R3 di Paolo Luongo
Schema di collegamento del pulsante ad Arduino UNO R3 di Paolo Luongo

Ora devo scappare, come al solito, e non ho il tempo di buttare giù lo sketch.
Nel caso serva... fate un fischio.

Ciao
Paolo :-)

6 commenti:

alexb ha detto...

Salve,
grazie per il suggerimento. Sto affrontando proprio questo problema. Potresti dettagliare un attimo lo schema elettrico del circuito di debouncing per capire meglio come sono i collegamenti ?
Grazie mille

paolo percds ha detto...


Ciao Alessandro,ho aggiunto lo schema elettrico.
In ogni caso, puoi semplicemente collegare un capacità di 100nF in parallelo al pulsante del tuo schema preferito.
Buon lavoro !

Unknown ha detto...

Buona sera.
Io ho inserito un condensatore ceramico 101 ma non funziona.
va messo il 104?.

paolo percds ha detto...

Ciao Andrea,
il condensatore marcato 101 è di 100pF mentre quello marcato 104 è da 100nF ossia 100000pF. Quindi la rispoata è si, ci vuole il 104.
Buon lavoro !

Unknown ha detto...

Buona sera.
Ho aggiunto un condensatore ceramico 104 come lei mi ha detto, ma il LED non vuole proprio spegnersi immediatamente, nel senso che il debouncing continua ad esserci.
Appena lo premo il led si accende immediatamente, quando vado a premere di nuovo non si spegne.

paolo percds ha detto...

Ciao Andrea, il problema del ritardo (ipotizzo) potrebbe essere nello sketch o nel pulsante di cattiva qualità che produce molto "rumore". Per applicazioni "professionali" esistono appositi circuiti di antirimbalzo: un condensatore non fa miracoli.
Nel caso ti consiglio di cambiare il pulsante e/o di aumentare il valore della capacità.
Se neanche così risolvi serve l'oscilloscopio per capire cosa succede al rilascio del pulsante.
Ciao e buon anno !