Tutorial Arduino – IR con TSOP1738

Lo scopo del tutorial è decodificare i segnali provenienti da un telecomando qualsiasi e utilizzare tali segnali per far svolgere delle azioni tramite Arduino (es.: accendere un LED oppure dare il segnale di pilotaggio di motori)

Per far funzionare il TOSP1738 utilizzeremo la libreria IR.remote.h che andrà installata nella cartella “Libraries” di Arduino, tale libreria puoi trovarla al link.

 

Arduino schema di collegamento del TSOP1738
Arduino schema di collegamento del TSOP1738

Il primo passo è fare un po’ di chiarezza sui segnali provenineti dal telecomando, esegui quindi una prova per decodifica segnali, per farlo puoi utilizzare lo sketch:

#include <IRremote.h> // use the library
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;

void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
  pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();// receive the next value
  }
   
}

Ti spieghero poi passo passo il codice completo della parte per pilotare un led, per ora:

 

  1. carica il programma sulla scheda Arduino;
  2. apri la finestra serial monitor;
  3. schiaccia un pulsante sul telecomando e guarda sulla finestra serial monitor il valore che appare (io ho schiacciando il tasto 6 sulla finestra appare 406 o 10406 tenendolo premuto):
IR serial signal

IR serial signal

Ho utilizzato i valori appena appresi nel nostro programma (preceduti da 0x) per far svolgere un’azione ad arduino (es. accendere un LED premendo il tasto 6)

Ecco il codice:

#include <IRremote.h> // use the library
int receiver = 11; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;

void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
  pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();// receive the next value
  }
 
  if ( results.value == 0x406 ||  results.value == 0x10406 ){ //tasto 6 sul telecomando
    digitalWrite(9, HIGH);   // set the LED on
  } 
 if ( results.value == 0x404 ||  results.value == 0x10404 ){ //tasto 4 sul telecomando
    digitalWrite(9, LOW);   // set the LED 0ff
  }  
}

Avrai notato che rispetto al precedente è variato poco, ho solo aggiunto la parte relativa al controllo del LED, in dettaglio quello che faccio è:

linea 1: includo la libreria IRemote nel mio sketch

linea2: dichiaro che il pin 11 è il “receiver” ovvero il pin da cui la libreria legge il segnale dal sensore, il pin 11 viene collegato al piedino OUT del sensore TSOP1738:

TSOP1738

TSOP1738

linea3: inizializzo la libreria IRemote

linea 4: decodifico il risultato che Arduino riceve dal sensore per ottenere un valore numerico utilizzabile nel confronto.

linea6: costruisco la funzione setup() che, come sai, è fondamentale per Arduino.

linea7: attivo la comunicazione seriale per vedere i valori letti dal sensore sulla Serial Monitor di Arduino quando premo un tasto sul telecomando

linea8: utilizzo il metodo irrecv.enableIRIn(); della libreria IRemote perchè legga i valori provenineti dal TSOP1738

linea9: imposto, mediante il comendo pinMode(9,  OUTPUT), l’utilizzo del pin 9 di arduino come output per pilotare il led

linee13-17: quando il sensore riceve un segnale proveninete dal mio telecomando scrive sul monitor seriale il valore rilevato Serial.println(results.value, HEX); e prosegue mettendo il sensore nuovamente n modalità di ascolto: irrecv.resume();

linee19-21:  premo il tasto 6, il valore letto del sensore è uguale a 406 o 10406, quindi porto l’uscita del pin 9  ad HIGH ( 1 ) ed il LED si accende

linee22-24: premo il tasto 4 , il valore letto del sensore è uguale a 404 o 10404 , quindi porto l’uscita del pin 9 a  LOW ( 0 ) ed il LED si spegne.

Buon divertimento.

 

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/informatica/tutorial-arduino-ir-con-tsop1738.html

217 pings

Skip to comment form

  1. […] l’articolo di Massimo sul TSOP1738 mi sono così incuriosito all’argomento che ho voluto fare qualche test ed ho tentato di […]

  2. […] per aggiungere il controllo del telecomando ad infrarossi forte degli articoli Tutorial Arduino – IR con TSOP1738 e Tutorial Arduino – IR con […]

  3. […] Mauro Alfieri » Blog Archive » Tutorial Arduino – IR con TSOP1738 […]

  4. […] Mauro Alfieri (lui fa un esempio più complesso ma comunque semplice) […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.