pugliasos newlogoDEF

Orario della segreteria: tutti i martedì, dalle ore 17 alle 19, su appuntamento.

 Decodificheremo i segnali provenienti da un telecomando qualsiasi che trasmetta con frequenza di 38 kHz e utilizzeremo gli stessi segnali per comandare Arduino a distanza per accendere e spegnere un LED.

Accendere e spegnere un LED con un telecomando html 14020de9472199d9

Utilizzeremo la libreria IR.remote.h ed un TL1838, che è un componente elettronico economico che rileva segnali a raggi infrarossi (IR).

In figura, i 3 pin del ricevitore IR, sono collegati, nell’ordine da destra verso sinistra rispettivamente ai 5 V, al GND ed alla porta A0 di Arduino.


 

Decodifica dei segnali provenienti dal telecomando


   Utilizziamo questo sketch:

#include <IRremote.h> // carica la libreria per ricezione di dati IR
IRrecv ricevitore(A0); // Crea un oggetto ricevente da noi battezzato “ricevitore”: impostiamo il pin A0 per la ricezione dei dati
decode_results codice_tasto; // ed il segnale che decodificherà lo dovrà salvare nella variabile codice_tasto

void setup(){
Serial.begin(9600);
ricevitore.enableIRIn(); // Attiva la ricezione
}

void loop() {
if (ricevitore.decode(&codice_tasto)) {
/* Tenta di ricevere un segnale IR.Restituisce vero se un segnale è stato ricevuto, falso altrimenti. Quando un segnale è stato ricevuto, immagazzina l'informazioneall'interno della variabile "codice_tasto". */

Serial.println(codice_tasto.value, HEX);
ricevitore.resume(); /* Va eseguita dopo il comando di ricezione per resettare il ricevitore e prepararlo a ricevere il segnale successivo */
}
}

 


Primo passo

Carichiamo lo schizzo ed apriamo il monitor seriale;

 

Secondo passo

Premiamo un pulsante del telecomando e leggiamo il valore che appare sulla finestra del monitor seriale.
Per utilizzare i valori scritti nel serial monitor basta aggiungere 0x prima della sigla del valore nello sketch.


 

Accensione del LED 13

 

#include <IRremote.h>
IRrecv ricevitore(A0);
decode_results codice_tasto;

void setup()
{
  pinMode(13,OUTPUT);
  Serial.begin(9600);
  ricevitore.enableIRIn(); // attiva la ricezione
}

void loop() {
  if (ricevitore.decode(&codice_tasto)) {
    Serial.println(codice_tasto.value, HEX);
    ricevitore.resume();
    if ( codice_tasto.value == 0x804E58A7){  //tasto 1 sul telecomando   
      digitalWrite(13, HIGH); // accende il LED
    }
    if ( codice_tasto.value == 0x804EF807){ //tasto 2 sul telecomando
      digitalWrite(13, LOW); // spegne il LED
    }
  }
}

 

Analisi del codice

 

linea 1:

#include <IRremote.h>
includo la libreria IRemote nel mio sketch.

 

linea 2:

IRrecv ricevitore(A0);
inizializzo la libreria Iremote; dichiaro che il pin A0 è il “receiver” ovvero il pin da cui la libreria leggerà il segnale dal sensore,
il pin A0 viene collegato al piedino OUT del sensore:

 

linea 3:
decode_results codice_tasto;
decodifico il risultato che Arduino riceve dal sensore per ottenere un valore numerico utilizzabile nel confronto.

 

Costruisco la funzione setup()

  • attivo la comunicazione seriale per vedere i valori letti dal sensore sulla Serial Monitor di Arduino quando premo un tasto sul telecomando
  •  utilizzo il metodo ricevitore.enableIRIn(); della libreria IRemote perchè legga i valori provenienti dal sensore
  • imposto, mediante il comando pinMode(13, OUTPUT); l’utilizzo del pin 13 di Arduino come output per pilotare il led

 

Costruisco la funzione loop()

  • quando il sensore riceve un segnale proveniente dal mio telecomando scrive sul monitor seriale il valore rilevato
    Serial.println(results.value, HEX);
    e prosegue mettendo il sensore nuovamente in modalità di ascolto: ricevitore.resume();
  • se viene premuto il tasto 1, per cui il valore letto dal sensore sarà uguale a 804E58A7 , porta l’uscita del pin 13 ad HIGH ( 1 ) ed il LED si accenderà
  • se viene premuto il tasto 2 , per cui il valore letto dal sensore sarà uguale a 804EF807, porta l’uscita del pin 9 a LOW ( 0 ) ed il LED si spegnerà


I codici dei tasti vanno aggiornati con quelli ottenuti con il telecomando in nostro possesso.

Save
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Read more
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline