Obiettivo: Controllo ON/OFF di un LED mediante il telecomando ELEGOO ad infrarossi.
Componenti elettronici:
- Arduino
- Telecomando IR Elegoo
- Ricevitore IR
- 1 Resistenza 100 Ohm
- 1 LED
Pre-requisiti:
Per utilizzare il sensore ad Infrarossi ed il telecomando è necessario installare la libreria IRremote. Per scoprire come installare la libreria IRremote consultare la seguente lezione:
Come Installare una Libreria (IRremote Library)
Teoria: Il telecomando è un dispositivo elettronico, sviluppato negli anni 50, che permette di inviare (ma non di ricevere) segnali ad un altro dispositivo situato a distanza per comandarlo.
In genere, i telecomandi tradizionali sono in grado di trasmette il segnale fino ad una distanza di circa 20 metri sotto forma di raggi infrarossi codificati.
Affinché il dispositivo da comandare possa ricevere i segnali inviati dal telecomando è necessario utilizzare un ricevitore ad infrarossi tipicamente fornito con il telecomando. La maggior parte dei ricevitori ad infrarossi in commercio sono dotati di 3 pin. Nel caso specifico, viene utilizzato il sensore KY 022, sul quale in prossimità dei connettori sono riportate tre lettere (G, R, Y)
- Alimentazione (R)
- Ground (G)
- Uscita (Y)
Il pin di uscita (Y) del ricevitore permette di inviare al microcontrollore (al quale è collegato il ricevitore) il segnale ricevuto dal telecomando. E’ importante considerare come ad ogni pulsante del telecomando sia associato un codice univoco. Tali codici variano in funzione dei vari telecomandi; pertanto prima di realizzare il programma finale è importante ottenere il valore del codice associato ai vari pulsanti.
Nel caso specifico del telecomando ELEGOO i codici associati ai vari pulsanti (ottenuti con il programma Arduino riportato in seguito) sono presentati nella seguente tabella:
Pulsante | Codice |
ON/OFF Button | 16753245 |
UP Button | 16748655 |
DOWN Button | 16769055 |
Number 0 | 16738455 |
Number 1 | 16724175 |
Number 2 | 16718055 |
Number 3 | 16743045 |
Number 4 | 16716015 |
Number 5 | 16726215 |
Number 6 | 16734885 |
Number 7 | 16728765 |
Number 8 | 16730805 |
Number 9 | 16732845 |
STOP | 16769565 |
Se il telecomando a disposizione è differente da quello proposto in questa lezione è possibile ottenere i codici eseguendo il software riportato in seguito. Una volta ottenuti i codici, è possibile attraverso il seguente collegamento circuitale scrivere il programma per comandare un LED attraverso il pulsante di ON/OFF del telecomando.
Collegamento Circuitale:
Codice:
A seguire viene riportato il software utile per determinare i codici associati ad ogni pulsante del telecomando a IR.
Ottenuto il codice associato al pulsante desiderato è possibile modificare il software per comandare l’azionamento di un LED mediante telecomando a IR. Il programma è molto simile al precedente viene solamente aggiunta la parte di codice relativa alla gestione del LED ed una istruzione IF per determinare se il pulsante premuto è quello di ON/OFF. E’ importante infatti considerare che il LED si accenderà solamente quando il pulsante di ON/OFF è premuto.
Personalizzazioni:
E’ possibile aggiungere più LED e comandare i vari LED con i vari pulsanti del telecomando.
Buongiorno, qua
C:\Users\Massimo\OneDrive\Documenti\Arduino\sketch_mar14a\sketch_mar14c\sketch_mar14c.ino: In function ‘void loop()’:
C:\Users\Massimo\OneDrive\Documenti\Arduino\sketch_mar14a\sketch_mar14c\sketch_mar14c.ino:18:31: warning: ‘bool IRrecv::decode(decode_results*)’ is deprecated: Please use decode() without a parameter. [-Wdeprecated-declarations]
if (receiver.decode(&results))
^
In file included from C:\Users\Massimo\OneDrive\Documenti\Arduino\libraries\IRremote\src/IRremote.h:99:0,
from C:\Users\Massimo\OneDrive\Documenti\Arduino\sketch_mar14a\sketch_mar14c\sketch_mar14c.ino:1:
C:\Users\Massimo\OneDrive\Documenti\Arduino\libraries\IRremote\src/irReceive.cpp.h:1032:6: note: declared here
bool IRrecv::decode(decode_results *aResults) {
^~~~~~
Quando verifico il codice con il mio ide arduino 1.8.13, mi da errore su: if (receiver.decode(&results)) non accetta &results e se lascio le parentesi vuote, nel monitor seriale visualizza 0 se premo qualsiasi pulsante del telecomando.
Prova a fare il downgrade della libreria alla versione 2.0
Ciao, vorrei fare una cosa molto simile solo che ho già un kit led attualmente alimentato tramite power bank (USB). Vorrei accendere il power bank tramite telecomando oppure togliere il power bank, alimentare la strip led a pile e accendere e spegnere i led sempre tramite telecomando. Fattibile e con che modifiche? Grazie =)
Si, puoi utilizzare degli interruttori controllati elettronicamente. Vedi Rele e transistor. Mediante il telecomando modifichi lo stato dell’interruttore (tipicamente utilizzando l’istruzione digitalwrite).