«

»

Lug 11

Stampa Articolo

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.

 

Permalink link a questo articolo: http://www.mauroalfieri.it/informatica/tutorial-arduino-ir-con-tsop1738.html

208 comments

4 pings

Vai al modulo dei commenti

  1. Paolo

    Ciao , non sono ancora pratico con l’utilizzo di ARDUINO ma mi interessa interfacciare un ricevitore IR per poter attivare delle uscite digitali.
    Ho caricato le librerie IRremote su ARDUINO ONE ,copiato il codice ma nella verifica mi da’ una serie di errori tipo(IRremote.cpp:600 error was not declared in this scope)
    ti sarei grato per un tuo aiuto.

    Ringrazio.

    1. Mauro Alfieri

      Ciao Paolo,
      non ho potuto provare il codice su Arduino One, ma ho compreso che il problema potesse dipendere dall’Ide, tu utilizzi l’Ide 1.0 ?
      Se si, ecco una modifica da eseguire sul file IRremoteInt.h che trovi nelle librerie di Arduino.
      alla linea 15 sostituisci questa linea:

      #include
      con
      #include

      I tuoi errori di compilazione dovrebbero svanire.

      Ciao

  2. Carmine

    Ciao Mauro
    ho lo stesso problema di Paolo uso Arduino 1.0. Solo che non capisco
    alla linea 15 sostituisci questa linea:

    #include
    con
    #include

    io leggo #include
    con #include.
    Grazie ciao

    1. Mauro Alfieri

      Ciao, ho visto solo ora che il commento è troncato, modifica il file “IRremoteInt.h” sostituendo:

      “#include WProgram.h”
      con
      “#include Arduino.h”

      Eliminando le “, le ho messe x farti arrivare tutta la stringa.

      Dimmi come va dopo la modifica.

      Ciao
      Mauro

      1. Dylan

        Ciao io ho provato il primo codice e premettendo ke ho sbagliato e ho invertito gnd con vcc spero di nn averlo bruciato! comunque nel serial monitor non scive nulla ad ogni tasto e nn riesco a capire il perche!

        1. Mauro Alfieri

          Ciao Dylan,
          di cosa ha invertito il positivo con il negativo, del sensore?

          Mauro

          1. Dylan

            Si del sensore!

            Secondo lei e bruciato o ha avuto qualche danneggiamento? poichè lo compila anke se ho un arduino uno r3 ma nn funziona il serial! premetto ke nn ho collegato nessun led al pin 9 ma vedendo il codice nn interessa il serial! aspetto suggerimenti grz in anticipo!!!

          2. Mauro Alfieri

            Ciao Dylan,
            potrebbe essersi danneggiato, l’unico modo per verificarlo senza strumenti é sostituirlo con un’altro ed osservare le differenze.

            Mauro

  3. Carmine

    Ciao buongiorno ho fatto una prova veloce e sembra andare tutto OK
    Ti aggiorno se ci dovessero essere novità grazie
    Ciao.

  4. Alessandro

    Ciao Mauro, ho un piccolissimo problema……sto utilizzando il tuo sketch ma con un semplice diodo IR trasparente(ricevitore IR) con in serie una resistenza da 10kOhm.Il risultato è che quando premo i tasti sul telecomando, il serial monitor mi da uno ZERO e qualche volta un valore a 32bit (Es. FFFFFFFF , 20DF6897
    )
    pensi ke sia il Diodo; oppure devo modificare qualcosa nel circuito?

    Ciao 🙂

    1. Mauro Alfieri

      Ciao Alessandro,
      stai usanto un diodo IR come ricevitore?
      Non penso che sia in grado di funzionare con questo sketch, il ricevitore previsto è il TSOP1738 o suo equivalente.

      Mauro

      1. Alessandro

        Si, sto utilizzando un classico diodo IR perkè non avevano il TSOP1738 al negozio di elettronica :-(((
        però utilizzando lo sketch di Test della libreria IRremote e puntando il telecomando proprio sopra il diodo, adesso mi identifica i codici come NEC e mi dà i 32bit :-DDDD

        come ti avevo già accennato, proverò ad acquisire quelli di un telecomando per climatizzatore……..vediamo che ne esce…….(il mio obiettivo è quello di comandare un Climatizzatore tramite Arduino)

        a presto,

        Alex

  5. marcello

    Ciao , non sono ancora pratico con l’utilizzo di ARDUINO UNO .
    Ho caricato le librerie IRremote su ARDUINO 1.0.1 ,copiato il codice ma nella verifica mi da’ una serie di errori tipo. ‘IRrecv’ does not name a type
    sketch_jun11a.2: error ‘IRrecv ‘ does not name a type
    sketch_jun11a.3:error ‘decode_results ‘ does not name a type
    sketch_jun11a:13:cpp: In function ‘void loop()’;

    Grazie
    Marcello

    1. Mauro Alfieri

      Ciao,
      forse è banale ma hai messo la libreria nelle library dell’IDE e inclusa nello sketch?

      Mauro

  6. Agostino

    Ciao Mauro.
    Ho seguito il tutorial ed è andato tutto bene. Anzi successivamente ho comandato un led rgb, un tasto un colore. Poi ho anche comandato un motorino tramite driver l293, un tasto senso orario un altro senso antiorario. Quello che volevo chiederti è:
    Perchè se faccio tutto questo con ardù attaccato al pc con usb funziona tutto anche il serial monitor. Se lo stacco e attacco ardù all’alimentatore non va più?
    Ciao e grazie sei un grande.
    Spero di incontrarci da qualche parte.
    Ciao Mauro

    1. Mauro Alfieri

      Ciao Agostino,
      ottimo il tuo lavoro, mi fa sentire fiero di scrivere articoli per appassionati come te.
      Con arduino attaccato al Pc hai l’alimentazione e la comunicazione seriale attraverso il cavo USB, staccandolo non puoi più avere il monitor seriale.
      Cosa differente è l’alimentazione che puoi fornirgli in modo separato, che tipo di alimentazione hai collegato?

      Mauro

      1. Agostino

        Ciao Mauro.
        Grazie per la pronta risposta.
        Ho attaccato ardù a un alimentatore 12 v (non mi ricordo di preciso quanto mA fornisce).
        Comunque ti assicuro che in altri progetti ardù con lo stesso alimentatore ha funzionato.
        Comunque con l’alimentatore ho solo provato il progetto con motore insieme a l293.
        Sai che l293 richiede doppia alimentazione una per lui e l’altra per i motori attaccati. E io queste due alimentazioni le ho date al l293 da un altro alimentatore. E da arduino ho mandato solo i comandi. Non è che l’alimentazione per l’ic l293 dovevo prenderla d’arduino?
        Ciao e grazie

        1. Agostino

          Ciao Mauro.
          Volevo informarti che ho risolto il problema, almeno sembra.
          L’alimentatore che alimenta il mio arduino fornisce 12 v e 1200ma.
          Oggi sperimentando con un motore passo passo, seguendo un tuo tutorial, mi sono accorto che quando staccavo il cavo usb e attaccavo l’alimentatore, sul circuito esterno mandavo solo il GND di arduino oltre agli imput. E tutto funzionava. Se invece non mandavo neanche il gnd o insieme al gnd mandavo anche il positivo non funzionava. Me ne ricorderò.
          Ciao

          1. Mauro Alfieri

            Ciao Agostino,
            ottimo per il tuo problema e grazie per averlo condiviso con tutti noi.

            Mauro

  7. dario

    Ciao,
    ho appena iniziato con Arduino e ho un problema nella compilazione.
    Sto usando IDE ver 1.0.2(ma ho provato anche con le precedenti e il risultato non cambia) con XP SP2.

    In pratica ho messaggi del tipo undefined reference to `IRrecv::IRrecv(int)’, sembra quasi che la libreria IRremote non sia “importata” correttamente.
    La libreria è stata importata nel progetto ma anche salvata nelle librerie dell’IDE.
    Una cosa che ho notato è che scrivendo IRrecv non cambia colore come succede per int o Serial.
    Se hai qualche idea o suggerimento.

    Grazie.
    Ciao.
    Dario

    1. Mauro Alfieri

      Ciao Dario,
      non ho ancora provato l’IDE 1.0.2 tuttavia se si verifica anche on l’IDE 1.0 e 1.0.1 il problema potrebbe essere che la libreria non è scritta per questi IDE.
      E’ un po’ che non la provo con i nuovi IDE, tuttavia tra i comment mi sembra che ci sia qualche altro utente che manifestava errori simili ed erano dovuti all’incompatibilità tra libreria e IDE.

      Mauro

      1. dario

        Grazie per la risposta.
        Mi puoi dire che versione usi per IDE? Io ho provato con la 0023, 1.0,1.0.1 ma il risultato non cambia.
        Volevo fare una prova con un altro computer e installando solo la 0023.

        Ciao.
        Dario.

        1. Mauro Alfieri

          Ciao Dario,
          devi controllare che IDE supporta questa libreria mi sembra sia l’IDE 0022.
          Nelle specifiche della libreria c’è scritto.
          E’ possibile che l’autore abbia già rilasciato la libreria aggiornata.

          Mauro

  8. dario

    La libreria è progettata per le versioni 1.x
    Ma non c’è verso di farlo andare.
    La cosa strana è che con qualsiasi versione lo compilo(dalla 0022 alla 1.0.2) si hanno sempre gli stessi errori.
    Ho provato con un altro computer ma il risultato è lo stesso.
    Ho provato per scrupolo ad aprire lo sketch blink d’esempio e caricarlo su Arduino UNO, qui tutto ok.
    Ho provato a cercare altri esempi con librerie scritte da terzi e anche in questo caso il problema persiste e la cosa mi sembra molto strana.
    Proverò a fare una ricerca sul forum se qualcuno ha i miei stessi problemi.

    Dario.

    1. Mauro Alfieri

      Ciao Dario,
      così come l’hai descritta la situazione sembra dovuta a un problema legato al caricamento delle librerie.

      Uno dei sintomi è che su tutti i computer su cui hai provato e con tutte le librerie di terze parti si verifica il medesimo problema.

      Mauro

  9. Gabriele

    Grazie mille 🙂 mi e’ stato molto utile, un “mi piace” meritatissimo

    1. Mauro Alfieri

      Ciao Gabriele,
      il blog è qui proprio per aiutare tutti gli appassionati a condividere la propria esperienza con Arduino e aiutarci a vicenda.
      Sai che quando hai dubbi su Arduino o altro puoi provare leggere qualche articolo.

      Mauro

  10. Stefano

    Ciao e buonasera…niente, volevo dire che tu sei un mito!!! AHAHAH nel senso che molte cose su Arduino le imparo grazie anche al tuo blog e alle tue semplici ed esaustive spiegazioni… Accendere un led con il telecomando di casa!!! mi sembra così assurdo…e simpatico…e forte… !!!!
    Grazie millemila volte
    Stefano

    1. Mauro Alfieri

      Grazie a te Stefano.
      sono i complimenti come il tuo a darmi la voglia di continuare !!!

  11. Giuseppe

    Salve Mauro,

    sono Giuseppe da Roma.
    Vorrei sapere se hai mai codificato prima, un telecomando dell’IR Kit Arduino. Nel senso che oggi, all’Università, ho eseguito un’esercitazione, dove ho inserito due LED sulla breadboard e ho programmato che questi due, sì accendessero e sì spegnessero, uno sì e l’altro no, e viceversa, premendo qualsiasi tasto. Poi, premendo sul tasto “Vol +”, ho fatto sì che entrambi i tasti sì dovevano spegnere.
    Il problema é che tutti gli altri tasti, ad eccezione del “Vol +”, hanno i codici uguali… E’ possibile settarli a mio piacere?

    Grazie,
    Giuseppe

    1. Mauro Alfieri

      Ciao Giuseppe,
      purtroppo no, come ti ho scritto in un altro commento, non conosco quel kit e non l’ho mai provato.
      Mi risulta difficile pensare che il codice sia sempre lo stesso per ogni tasto a parte Vol+ sarebbe un kit inutile.

      Suppongo si tratti di un problema software o di telecomando non funzionante.

      Mauro

  12. Vincenzo

    Buon giorno a tutti
    mi chiamo vincenzo, premetto che sto muovendo i primi passi nella programmazione di arduino 2009,
    la ver che utilizzo e la 1.0.3, ho risolto tutti i problemi relativi ai ricevitore infrarossi caricando le nuove lib,
    sul sito :
    https://github.com/shirriff/Arduino-IRremote
    adesso faccio una domanda cosa mi potete dire per utilizzo di rx radio tipo 433,30 per telecomandi cancello ?
    grazie anticipate

    1. Mauro Alfieri

      Ciao Vincenzo,
      Non si molto di ricevitori e trasmettitori su quelle frequenze ma ti ringrazio per aver condiviso le tue lib modificate ed adattate per L’arduino ide 1.0.3

      Mauro

  13. Andrea

    Ciao Mauro, vorrei sapere se è possibile far muovere un servo con il telecomando della televisione. Ho effettuato alcune prove ma niente. Grazie mille per la risposta. Andrea

    1. Mauro Alfieri

      Ciao Andrea,
      si è possibile.
      Devi prima verificare che tu riesca a leggere i comandi che arrivano dal tuo telecomando.
      Seguendo il tutorial vedrai che ti basta poi associare un comando a ciò che vuoi far fare al servo.

      Mauro

      1. Andrea

        Grazie per la risposta mauro, io costruisco dei modellini in legno…ora vorrei guidarli con arduino. Sto costruendo una ruspa. Ho calcolato che mi ci vorranno 8 comandi visto che utilizzo i joystick di una vecchia playstation…ora la mia domanda è mi servono 8 led infrarosso trasmittenti e 8 riceventi o me la cavo con uno???…perchè se ne bastasse 1 trasm e 1 ric allora potrei utilizzare un telecomando di una televisione. Andrea

        1. Mauro Alfieri

          Ciao Andrea,
          mi piacerebbe vedere i tuoi modellini in legno, magari puoi inviarmi qualche foto e video quando riuscirai a pilotarli.
          La risposta alla tua domanda è che ti basta 1 led in Tx ed un Ricevitore tipo il TSOP1738, presentato in questo articolo.
          Questo se invii un comando alla volta, con una ruspa ho idea che invii almeno due comandi alla volta, in tal caso ti consiglio due led in TX ed due TSOP1738.

          Il codice diventa un po’ più complesso perchè devi settare i due canali su due codifiche differenti in modo che non si diano fastidio.
          Hai pensato ad altri sistemi di controllo tipo WiFi o XBee?

          Mauro

          1. Andrea

            Si appena riuscirò ti manderò il video…fin’ora ho 72 modellini tutti in legno e 2 in ferro. Purtroppo mi sono cimentato da poco con arduino e avevo pensato all’infrarosso. Per quanto riguardo il wifi e Xbee non saprei proprio come muovermi. Comunque considera che dovrò muovere due motorini tergicristallo uno per cingolo più due servi per la ruspa frontale. Poi nel caso ci sarebbero le luci ma mi accontento di queste quattro cose. Comunque avevo pensato ai joystick visto che ne avevo uno rotto a casa. Collegando la scheda direttamente funziona tutto (i motori tergicristallo essendo a 12 volt li ho collegati con un interuttore dell’alzavetri collegato ad un servo). Andrea

          2. Mauro Alfieri

            Ciao Andrea,
            ho immaginato che fossero più piccoli 🙂
            Ti servirà sicuramente un buon driver motori, sai questi motori quanto assorbono?

            Mauro

          3. Andrea

            Comunque puoi trovare alcuni dei miei modelli su you tube a questo indirizzo http://www.youtube.com/user/superandry90/videos?view=0&flow=grid Andrea

          4. Mauro Alfieri

            Ciao Andrea,
            davvero molto belli.

            Mauro

          5. Andrea

            Ciao Mauro grazie mille…comunque i due motori assorbono circa 40 W l’uno…parecchio direi. Mi potresti dare qualche dritta con l’uso del joystick wifi?

          6. Mauro Alfieri

            Ciao Andrea,
            i motori assorbono 40W e funzionano a quanti V?
            I driver di solito lavorano per Corrente ( Ampere ) assorbite e con W e V puoi calcolarlo.

            Sul Joystick io ti consiglio di leggere il tutorial sulla joystick shield che ha un controllo a e assi e due pulsanti e qualcosa sulla comunicazioni WiFi ( vedi WiFi Shield ).
            Il WiFi è un buon metodo per la comunicazione tra shield ma necessita di conoscenze specifiche, l’Xbee è un protocollo seriale decisamente più semplice per quello che vuoi realizzare.

            Mauro

  14. Sergio

    Ciao Mauro
    ho seguito alla lettera il tuo esempio ed ora riesco ad accendere e spegnere dei led tramite telecomando, tutto funziona a meraviglia.
    Fatto questo ho cercato di andare oltre, e cioe’ di comandare due sensori ad infrarossi con lo stesso telecomando senza riuscirci, vorrei infatti poter far accendere led diversi a seconda di quale sensore riceve il segnale, e’ possibile fare questo?
    Ciao Sergio

    1. Mauro Alfieri

      Ciao Sergio,
      teoricamente é possibile se riesci ad isolare otticamente i due sensori nel senso che non devono ricedere entrambi il segnale dal telecomando altrimenti fanno la medesima operazione.

      Mauro

  15. Sergio

    I due sensori sono isolati otticamente, ma su internet non sono riuscito a trovare nessun esempio che permetta nello stesso sketch di poter far “convivere” due sensori infrarossi e cioe’ di poter eseguire due azioni diverse a secondo del sensore che riceve il segnale. Ho provato questo ma … non funziona, dove sbaglio?

    #include

    int RECV1_PIN = 12; // led infrarossi 1
    int RECV2_PIN = 11; // led infrarossi 2

    IRrecv irrecv1(RECV1_PIN);
    IRrecv irrecv2(RECV2_PIN);

    decode_results results1;
    decode_results results2;

    void setup()
    {
    Serial.begin(9600);
    irrecv1.enableIRIn();
    irrecv2.enableIRIn();

    }

    void loop()
    {
    if (irrecv1.decode(&results1)) {
    Serial.println(results1.value, HEX);
    if ( results1.value == 0x01 ) {
    digitalWrite(9, LOW);
    }
    irrecv1.resume(); }

    if (irrecv2.decode(&results2)) {
    Serial.println(results2.value, HEX);
    if ( results2.value == 0x02 )
    {
    digitalWrite(10, HIGH);
    }
    irrecv2.resume(); }

    }

    Ciao Sergio

    1. Mauro Alfieri

      Ciao Sergio,
      non ho mai provato a realizzare quello che vuoi fare tu.
      Lo sketch sembra corretto, mi dovresti dire che comportamento presenta per poterti aiutare a capire cosa accade.

      Mauro

  16. Sergio

    Ciao Mauro
    lo sketch non funziona, cioe’ funziona solo un infrarossi mentre l’altro non decodifica il segnale per circa 20 secondi, poi decodifica il segnale anche il secondo infrarosso ma e’ una decodifica totalmente sbagliata (es. invece di decodificare 01 mi restituisce sul serial monitor EEAB05GF)
    Ciao Sergio

    1. Mauro Alfieri

      Ciao Sergio,
      potrebbe essere incompatibilità del telecomando? Usi lo stesso su entrambi i ricevitori?

      Mauro

  17. Sergio

    Ciao Mauro e grazie per l’interessamento.
    Il telecomando e’ lo stesso, mentre i ricevitori funzionano, e cioe’ se li cambio di posizione il ricevitore di destra decodifica bene mentre l’altro decodifica in ritardo e male, qualsiasi ricevitore inserisco, se li cambio di posizione non cambia nulla. Sembra un conflitto ma non risco ad uscirne. Ho cercato su internet ma non sono riuscito a trovare nessun sketch con due ricevitori che compiono azioni diverse. Ti posso aggiungere che se elimino dallo sketch queste tre righe:

    int RECV2_PIN = 11; // led infrarossi 2
    IRrecv irrecv2(RECV2_PIN);
    decode_results results2;

    il ricevitore che non funzionava comincia a decodificare normalmente.
    Ciao Sergio

    1. Mauro Alfieri

      Ciao Sergio,
      quello che descrivi é un conflitto interno alla libreria IR.
      Evidentemente non puoi utilizzare la doppia usanza della libreria.

      A questo punto puoi:
      – cambiare libreria cercando ne una che non sia soggetta a questo problema
      – correggere la libreria e pubblicare le tue correzioni all’autore

      Mauro

  18. Clemente

    Ciao Mauro ottimo tutorial,
    mi sai dire come mai quando provo a leggere il segnale per decodificarlo, lo stesso tasto mi da codici differenti? Ho provato vari telecomandi ma il risultato è lo stesso.

    grazie

    1. Mauro Alfieri

      Ciao Clemente,
      é strano. Hai un telecomando di quelli elencati tra le marche supportate o stai usando la funzione row?

      Mauro

      1. Clemente

        Ciao Mauro,
        grazie della risposta.
        Comunque sono riuscito a decodificare un telecomando, ma non riesco con un telecomando di marca diversa.
        Quello che ho notato è che con alcuni telecomandi, cambiando inclinazione o la distanza dal ricevitore, il segnale che decodifica, è diverso di volta in volta. Come è possibile? Da cosa dipende secondo te??

        grazie e complimenti per l’ottimo lavoro che svolgi su questo sito. 😉

        1. Mauro Alfieri

          Ciao Clemente,
          ogni telecomando ha la sua codifica e probabilmente una differente frequenza di lavoro del diodo questo potrebbe causare il primo inconveniente.

          Per la differenza potrebbe essere dovuta a interferenza infrarosse causate da altre fonti di illuminazione, in pratica l’inclinazione del telecomando potrebbe dar spazio al l’influenza di altre fonti luminose sulla scia telecomando-ricevitore.

          Mauro

          1. Clemente

            Capisco,
            grazie per la delucidazione!
            Continua così, sei un grande!
            🙂

            un saluto
            ciaoooo

  19. pasquale

    ciao ho provato a fare il circuito che proponevi ha differenza che io ho il tsop 3483 cambia a livello di programmazione ? ti ringrazio

    1. Mauro Alfieri

      Ciao Pasquale,
      non conosco e non possiedo il tuo componente, dovresti provare e verificare da solo segnali e codici.

      Purtroppo non so aiutarti.

      Mauro

  20. nicola

    ciao Mauro io ho provato a scaricare le librerie su arduino e aprendo i vari esempi e facendo la verifica o comunque l invio dello sketch , mi da degli errori di compilazione..anche sullo sketch presente in questa pagina che ho provato ad incollare sul programma di arduino mi compaiono errori di compilazione ,quando verifico.. cosa potrebbe essere?

    1. Mauro Alfieri

      Ciao Nicola,
      che versione di IDE usi?
      Controlla che la libreria che hai scaricato sia stata scritta per l’IDE che utilizzi.
      Molti degli esempi, librerie e sketch che leggi sul blog sono per l’IDE 0022.
      Oggi usiamo tutti la versione 1.0.x e molto materiale non è utilizzabile senza modificarlo.

      Mauro

  21. Ferdinando

    Buongiorno Mauro,
    grazie per il tuo impegno, vorrei chiederti un consiglio. Ho riprodotto il tuo progetto del ricevitore IR apportando una piccola modifica, ovvero, ho modificato lo skatch in modo che dovrebbe effettuare una solo operazione, accendere e spegnere un led.
    Non so perchè, ma lo sketch non risponde al comando delay e lascia acceso il led.
    Lo sketch modificato è questo:

    #include
    int receiver = 11;
    IRrecv irrecv(receiver);
    decode_results results;

    void setup()
    {
    Serial.begin(9600);
    irrecv.enableIRIn();
    pinMode(7, OUTPUT);
    }
    void loop()
    {
    if (irrecv.decode(&results))
    {
    Serial.println(results.value, HEX);
    irrecv.resume();
    }

    if ( results.value == 0x800F040D )
    {

    digitalWrite(7, HIGH);
    delay (1000);
    digitalWrite(7, LOW);
    }

    }

    Grazie ancora

    1. Mauro Alfieri

      Ciao Ferdinando,
      purtroppo gli sketch incollati nei commenti si leggono male.
      Da quello che riesco a intuire lo sketch sembra corretto, prova ad aumentare il delay a 5000 e ad aggiungere qualche Serial.print nel momento in cui entri nel secondo if

      Mauro

  22. Giacomo

    Salve Mauro,
    il tuoi articolo è molto interessante. Ho un problema nell’utilizzare un IR LED, nel senso che ho utilizzato il TSOP1738 per leggere i codici in HEX del telecomando del condizionatore ma non riesco ad accenderlo. Utilizzo il programma presente nela libreria IRRemote di Arduino. Secondo te, qual’è il problema ? Ti ringrazio in anticipo per la risposta.

    1. Mauro Alfieri

      Ciao Giacomo,
      la libreria IRremote supporta solo alcuni tipi di telecomandi/codifiche.
      Dovresti verificare se utilizzando la codifica del tuo condizionatore è in grado di replicare lo stesso codice accettato dal condizionatore.

      Mauro

  23. Giacomo

    Ciao Mauro,
    Volevo sapere se questo sensore ir potrebbe andare bene per questo tipo di progetto:
    http://www.ebay.it/itm/TSOP31238-Sensore-INFRAROSSO-TSOP-31238-equivalente-a-TSOP1738-/230999843688?pt=Componenti_elettronici_attivi&hash=item35c8a9e368&_uhb=1
    C’è scritto equivalente a TSOP1738, ma vorrei esserne sicuro.
    Poi l’ultima cosa, che tipo di telecomando andrebbe usato?
    http://www.ebay.it/itm/Telecomando-generico-IR-38kHz-/261248643545?pt=Componenti_elettronici_attivi&hash=item3cd3a1f1d9&_uhb=1
    Questo secondo te andrebbe bene?
    Grazie mille in anticipo 🙂

    1. Mauro Alfieri

      Ciao Giacomo,
      le informazioni che ho trovato sono identiche a quelle che hai già letto anche tu, se il venditore garantisce che sia equivalente l’unico modo per sapere se è vero è provarlo.

      In merito al telecomando ci sono una serie di marchi supportate, leggi l’articolo, io proverei prima con un telecomando che avrai in casa.

      Mauro

  24. Giacomo

    Purtroppo non ho niente, quel telecomando utilizza un protocollo NEC quindi dovrebbe andare bene.
    Grazie mille, buona giornata!

    1. Mauro Alfieri

      Ciao Giacomo,
      si i codici del Nec sono supportati dalla libreria IRRemote.

      Mauro

  25. Dylan

    Ok grazie mille del interessamento!
    Arrivederci
    Dylan

  26. Gianni

    Complimenti per l’articolo..
    Ho un condizionatore, una volta decodificato i codici del comando, come faccio ad inviare i codici al condizionatore per accenderlo?
    Ho visto che tu hai fatto una cosa simile:

    Se il codice è 0x404 accendi un led.. fin qui ci sono ma quello che voglio far io è inviare i codici al condizionatore..
    Grazie

    1. Mauro Alfieri

      Ciao Gianni,
      leggendo l’articolo scoprirai che individuato il codice, se esiste una codifica riconosciuta, non dovrai far altro che sostituire il comando dato con il tuo codice del condizionatore.

      Mauro

  27. Claudio

    Ciao volevo realizzare un progetto che prendesse spunto da questo per comandare una macchina radio comandata (sono gia molto pratico di arduino avendolo studiato a scuola) le librerie che usi codificano anche segnali radio a alta frequenza (1GHz) ?

    1. Mauro Alfieri

      Ciao Claudio,
      no, la libreria IR è specifica per telecomandi a raggi infrarossi.
      Dovrai cercare delle librerie per i tuoi moduli di trasmissione ad alta frequenza.

      Mauro

  28. Davide

    ciao quando vado a compilare il codice per decodificare i segnali alla riga 3 mi da questo tipo di errore: “irrecv” does not name a type

    1. Mauro Alfieri

      Ciao Davide,
      l’errore è dovuto al fatto che non hai incluso la libreria IRremote, se leggi la descrizione dello sketch noterai che le prime linee includono una libreria apposita che funziona sull’IDE 0022 di arduino.

      Mauro

  29. Andrea

    Buon Giorno Mauro
    Ho acquistato il robot kit di Arduino e vorrei mettere dei sensori infrarossi per farli rilevare la palla
    usata per la il soccer della robocup (che emette infrarossi).
    posso usare un sensore tsop 2236 vishay ? e:” devo metterci una resistenza prima di collegarlo alla board ? o posso collegarlo direttamente?
    grazie e saluti
    Andrea

    1. Mauro Alfieri

      Ciao Andrea,
      non possiedo il robot arduino e non ho mai utilizzato il sensore IR di cui mi parli.
      Mi spiace ma non so come aiutarti, immagino che sul forum arduino ci siano altri appassionati che hanno realizzato progetti si mili da cui puoi prendere spunto.

      Mauro

  30. MARCO

    Salve se volessi con lo stesso tipo di sistema pilotare una striscia led rgb che tipo di collegamenti devo eseguire ? perché il circuito di sopra funziona a 5V mentre la strip led a 12 quindi collegandolo al pin 9 la striscia led nonn fa niente e penso che sia pure normale dato che la tensione è a 5V. Se mi può dare una mano le sarei grato saluti marco

    1. Mauro Alfieri

      Ciao Marco,
      per collegare una striscia di led ad arduino dovrai usare un Driver di controllo per led tipo quello presentato in questo articolo:
      http://www.mauroalfieri.it/elettronica/led-driver-zxld1350-faretti-arduino.html
      So che Luca, autore del driver, sta lavorando ad una shield equipaggiata con il driver che a breve sarà disponibile.
      Io certamente ne acquisterò una e la proverò scrivendo molti articoli interessanti 🙂

      Puoi iscriverti alla newsletter per essere informato al momento della sua uscita.

      Mauro

  31. Michele

    Ciao
    Sono un principiante e volevo farti i complimenti per lo sketch, ottimamente spiegato nei dettagli.
    Sono riuscito a farlo funzionare con un sensore diverso da quello descritto, cioè uno di quello con la pallina frontale (non ricordo la sigla), ma la domanda è:
    Come mai funziona solo con la seriale attivata?
    Se chiudo l’ IDE, o se ad esempio lo collego con una batteria, come posso fare a farlo andare senza la seriale?
    Immagino si dovrà intervenire sul codice, ma non ho capito come, si può mettere la seriale in una sorta di background?
    Mi scuso per le domande banali…
    Ciao e tanti auguri di buone feste..

    1. Mauro Alfieri

      Ciao Michele,
      averi bisogno di qualche dettaglio in più sul tipo di sensore che hai utilizzato.
      Lo sketch funziona anche senza la porta seriale del Pc connessa cosa ti aspetti che faccia senza l’IDE collegato che non riesci a fare?

      Mauro

  32. Michele

    Ho risolto, il problema era che con arduino collegato, il telecomando funzionava solo con il monitor seriale aperto, quindi senza IDE aperto non funzionava.
    Ho risolto mettendo la batteria a 9v come alimentazione e il tutto funziona autonomamente.
    Non so se sia un problema solo mio, ma se lo collego al pc non funziona nulla, nemmeno aprendo IDE, funziona solo aprendo il monitor seriale.
    Saluti

    1. Mauro Alfieri

      Ciao Michele,
      attendiamo che altri appassionati ci diano riscontro. A me non accade, tuttavia io ho il mio progetto alimentato come hai fatto tu.

      Mauro

  33. MALITH

    Grazie alla tua guida sono riuscito a finire la mia macchina rc mettendoci ARDUINO UNO + MOTOR SHIELD + IR remote va che una meraviglia grz mille 🙂

    1. Mauro Alfieri

      Ciao Malith,
      sono contentissimo del tuo risultato e di aver contribuito anche se in minima parte.

      Mauro

  34. matteo

    ciao, bel programma,

    ma perché ai messo 0x406 non basta solo in numero senza il x (406)? io lo provato cosi e non mi funzionava, poi o tolto 0x e sembra che funziona, perché? a cosa servono 0 x ?

    1. Mauro Alfieri

      Ciao Matteo,
      grazie per i complimenti.
      I codici possono variare da telecomando a telecomando il valore 0x indica un indirizzamento dei codici e sul mio telecomando é necessario perché funzioni, se il tuo non ne ha bisogno puoi ometterlo.

      Mauro

  35. Francesco

    Salve,
    ho provato in tutti i modi a far funzionare questo codice ma senza nessun risultato.
    Uso la versione 1.0.5 dell IDE di arduino e non appena carico il codice del post mi dà questo errore: ‘IRrecv does not name type’. In tutto ciò ho scaricato la libreria arduino IRremote dal link nella cartella libraries dell’IDE di Arduino, ma non so se basta questa procedura per la corretta installazione.

    1. Mauro Alfieri

      Ciao Francesco,
      innanzitutto controlla che la libreria IRremote sia stata rilasciata per l’IDE 1.0 o superiore, l’ultima volta che l’ho usata io era disponibile solo per la versione 0022, in tal caso o ne trovi un’altra o ti modifichi questa.

      Mauro

  36. Alex

    Ciao Mauro

    Innanzi tutto mi volevo complimentare con te per il lavoro che svolgi nel tuo blog, e penso che grazie a te, molte persone, tra le quali ci sono anch’io, posso provare a cercare di capire qualcosa di più di questa piattaforma sorprendente qual’è arduino.
    Premetto che sono un novizio in questo campo e che, forse quello che voglio realizzare è un pò avanzato per un principiante, pertanto sono a richiedere il tuo supporto.
    Io vorrei realizzare tramite arduino un’interfaccia che mi permetta di accendere dei relè attraverso un telecomando IR. Ho provato il tuo codice e mi restituisce il codice HEX che mi permette di avviare correttamente l’uscita da me voluta. Il mio problema sta nel capire ( e qui premetto che ho speso un paio di pomeriggi a far prove inconcludenti) come fare a far si che premendo un pulsante del telecomando l’uscita vada HIGH e nel momento che rilascio il medesimo pulsante l’uscita vada LOW. Inoltre avrei la necessità di capire come fare a portare l’uscita HIGH con la prima pressione di un tasto e che rimanga tale fino alla seconda pressione la quale porterà l’uscita in LOW.
    Praticamente voglio capire come far lavorare arduino come un relè passo-passo e come un relè monostabile, però al contrario del tuo esempio dove vengono usati 2 pulsanti, uno per HIGH e uno per LOW, io vorrei usare un pulsante singolo per pilotare lo stato di out.
    Spero di non evadere dalle mie possibilità nel richiedere lo sketch già compilato in quanto non ho ancora ben capito come e dove usare parentesi e punteggiatura e sopratutto sintassi.
    Forse, con il tuo aiuto e con uno sketch di confronto posso cominciare a fare qualche passo avanti.

    Ti ringrazio anticipatamente.

    Alex

    1. Mauro Alfieri

      Ciao Alex,
      all’inizio tutti abbiamo delle difficoltà con i progetti che ci vengono in mente, tuttavia lo studio e l’applicazione del ragionamento servono a risolverli 🙂
      Ho compreso il tuo progetto è non è impossibile da realizzare, certo hai bisogno di iniziare con cose più semplici e ti consiglio di seguire il mio corso on-line gratuito o di partecipare ad un mio corso in aula in cui partiamo dalle basi della sintassi.

      C’è tuttavia un passaggio del progetto che vedo complesso, il primo, ossia l’uso del telecomando per eccitare un relé fino a quando mantieni la pressione del pulsante in quanto la natura del segnale IR è un treno di segnali che serve proprio ad evitare che interferenze luminose interrompano il flusso dati, se tu mantenessi sempre in pressione il pulsante ma per qualche fattore esterno il treno d’onda fosse interrotto otterresti comunque un comportamento instabile del relé.

      Per il secondo passaggio devi usare una variabile di stato e puoi seguire i miei esempi su come accendere e spegnere un led con un solo pulsante.

      Mauro

  37. Alex

    Mauro, ti ringrazio infinitamente per la cortesia che mi hai dimostrato.

    La tua perspicacia sul fatto dell’interruzione del flusso per l’eventuale funzionamento ” a pulsante” mi ha preso alla sprovvista e devo dire che in effetti hai ragione, anche se, potrei essere comunque interessato al funzionamento “temporizzato” (lancio l’impulso dal telecomando, il relè va HIGH e dopo mezzo secondo va LOW).
    Per il corso on line, voglio essere sincero… ho poco tempo… preferisco continuare a fare “esperimenti”.

    Per ora Mauro sono solo che in debito con te per l’instradamento che mi hai dato.

    Se realizzo qualcosa di buono ti farò sapere.

    Un sentito ringraziamento.

    Alex

    1. Mauro Alfieri

      Ciao Alex,
      arduino é un divertimento e momento di concentrazione personale, se non ci concediamo il tempo che serve neppure per gli svaghi personali io penso che si perda il gusto di provarci.

      Non sei in debito di nulle, continua a sperimentare e spero che tu presto mi scriva di aver realizzato il tuo progetto e , magari, di volerlo condividere sul blog.

      Mauro

  38. Paolo

    Ciao Mauro ho un problem ti espongo prima quello che voglio fare, ho un sensore ir collegato all arduino quando questo riceve la pressione di un pulsante particolare devo eccitare un relè per 200millisecondi e poi dinuovo spengo, l impulso lo prelevo dal normalmente aperto del relè.
    ora funziona più o meno il problema e che l arduino legge milioni di volte mentre io sto premendo quindi in uscita e che mi accede e spegne il rele più volte.
    io vorrei che premendo il tasto mi invi un impulso di 200millisecondi e poi dinuovo spegne senza avere quei rimbalzi, come posso fare ci vorrebbe qualcosa per ingnorare tutti gli impulsi ricevuti dopo il primo o qualcosa del genere ma nn so come fare hai qualche suggerimento ciao grazie

    1. Mauro Alfieri

      Ciao Paolo,
      se leggi qualche commento su vedrai che ho descritto il problema che tu verifichi ad un altro utente con il tuo medesimo problema.
      E’ la natura del treno di impulsi dell’IR che causa questo problema e l’unica è lavorare sui controlli e sui tempi prima di ritenere valido un comando ma rischia di ritardarti tutta l’esecuzione del progetto di secondi e tu mi scrivi di tempi nell’ordine di 200ms

      Mauro

  39. Paolo

    ciao ho provato cosi rifacendomi un po al codice anti rimbalzo di Banzi nel suo libro. ma non funziona ancora bene nel senso che mi evita si il treno di impulsi ma se invio un impulso nel periodo che dovrebbe ignorarlo in relata me lo ritarda.

    1. Mauro Alfieri

      Ciao Paolo,
      il codice degli sketch viene rimosso in automatico dai commenti, leggi bene in fondo all’articolo le note.
      Ti consiglio di continuare a provare e cercare dove fallisce lo sketch comportandosi in modo differente da quello che desideri, é questo il segreto che uso per imparare e scrivere nuovi tutorial.

  40. Matteo

    Ciao mauro,sono un giovane intraprendente con arduino,ho copiato e incollato lo sketch e ho messo la libreria irremote in libreries. Quando vado a caricarlo mi dice: IRrecv is not name a type. Come devo fare? grazie

    1. Mauro Alfieri

      Ciao Matteo,
      hai anche letto l’articolo e i commenti degli altri appassionati? Probabilmente hai un problema di incompatibilità tra la libreria l’IDE installato.

  41. Matteo

    Caio mauro,ora ho risolto,non mi da nessun errore,solo che quando vado a fare la prova sul computer o carico lo sketh su arduino premendo il tasto 6 o qualunque altro tasto non mi si accende nulla.Non dipenderà dal telecomando?

    1. Mauro Alfieri

      Ciao Matteo, potrebbe dipendere dal telecomando, dalle interferenze luminose, dallo sketch o dall’incompatibilità del tuo telecomando con lo sketch.

      Nell’articolo ho descritto come la Libreria IR opera e quali telecomandi é in grado di leggere e comprendere, io ho usato un Samsung.

      Prova a verificare con il monitor seriale che ti arrivino dei segnali e che questi corrispondano ai codici attesi.

  42. giacomo

    Quante idee mi fai venire Mauro … sei un grande … ogni giorno apro un tuo link e imparo tanto con arduino.. io possiedo anche l Ethernet shield .. se fa iqualcosa sarebbe bello utilizzarla .. 😉

    1. Mauro Alfieri

      Ciao Giacomo,
      ci sono già degli articoli sul blog dedicati a questa shield anche in uso con smartphone e tablet.

  43. Giorgio

    Ciao,
    è possibile utilizzare il sensore ir per pilotare i motori passo passo? Vorrei, utilizzando la tua guida dove fai vedere attraverso due pulsanti la rotazione in senso orario e antiorario di un passo passo, sostituirli con il comando remoto.
    Per caso hai già fatto un articolo su questo?

    Grazie!

    1. Mauro Alfieri

      Ciao Giorgio,
      si, puoi controllare un motore passo-passo con un comando IR
      Devi tener conto che la natura del segnale IR é un treno di impulsi e questo rende complesso discriminare se si tratta di una ripetizione dovuta al segnale o ad una sequenza di pressioni del medesimo pulsante.

      Essendo l’IR usato per cambiare canale questo aspetto non ha influenza sul funzionamento del televisore, ma con un motore passo-passo perdi il vantaggio di conoscere la posizione dell’albero motore.

  44. Giorgio

    Ciao,
    Grazie per la disponibilità! Un ultima domanda, ho realizzato un mini robot da usare come dolly per fare delle riprese. Lo sketch mi fa muovere i motori prima avanti poi indietro senza alcun comando. Come faccio ad eseguire questo codice solo quando a distanza con il sensori ad infrarossi premo il pulsante? C’è la possibilità di fare eseguire un gruppo di codice solo quando arriva il segnale dal sensore? Non so se mi sono spiegato.
    Grazie buona giornata

    1. Mauro Alfieri

      Ciao Giorgio,
      spero di aver interpretato correttamente quello che chiedi:
      Vuoi che alla ricezione di un segnale dal telecomando IR venga eseguita una porzione i codice, se questo è ciò che vuoi ti basta usare il costrutto “if/else” che trovi sia in questo articolo, sia in tanti altri oltre che sul sito ufficiale arduino.

      Mauro

  45. Giorgio

    Perfetto, risolto grazie mille!

  46. Giorgio

    Buongiorno,
    Ho applicato il suo sketch al mio robot , funziona, non parte fino a quando non riceve il segnale, poi in base al tasto che premo, ruota nella direzione scelta. L ‘unico problema che non riesco a risolvere è che da quando premo il pulsante per far cambiare direZione al motore, l input non è immediato, ma devo attendere un po. Posso farle vedere il mio programma? C’è un modo per dire ad arduino di stoppare il programma tipo il tasto reset? Grazie

    1. Mauro Alfieri

      Ciao Giorgio, non é un problema di codice ma di funzionamento del sistema IR.
      Se ti documenti su internet scoprirai che l’infrarosso é un treno di onde che viaggi nell’aria con un tempo alto di risposta

  47. Giorgio

    Ok graZie

  48. marco

    Buonasera Mauro,

    non da molto seguo il tuo sito e cosi’ ho imparato ad usare i codici e l’hardware di arduino, ora sto provando l’implementazione dei comandi IR, ma quando carico il codice mi appare questo errore:

    C:\Users\ao\Desktop\arduino-1.5.6-r2-windows\arduino-1.5.6-r2\libraries\RobotIRremote\src\IRremoteTools.cpp:5: error: ‘TKD2′ was not declared in this scope

    ho provato a ricercare su internet ma non ho trovato questo errore.
    Penso sia qualche cosa di librerie, ma anche il file di esempio dell’ IDE mi da questo errore…

    Sto scimunendo…Cosa può essere ?
    Grazie
    Marco

    1. Mauro Alfieri

      Ciao Marco, questo errore fa riferiment ad un al progetto RobotIRRemote che non conosco.
      É di certo un errore di libreria, lo sketch non trova TKD2 che deve essere qualcosa presente o nel tuo sketch o nella libreria IRemoteTool.cpp

      Prova con uno sketch semplice come quello consigliato nel mio articolo caricando la libreria IRemote.h scaricandola da internet.

      1. marco

        grazie per la prontissima risposta, 🙂

        caricando la libreria presente sull’IDE e l’esempio dello stesso IDE mi ritorna lo stesso errore…
        di solito provo sempre i tuoi codici, questo pero’ mi sta dando questo problema…

        altri codici danno questo e altri errori…

        non è che l’ IDE sfarfalla un po’??

        grazie…

        1. Mauro Alfieri

          Ciao Marco, questo sketch é stato scritto per l’IDE 0022 ed allora la IRemote dovevi caricarla come libreria extra.
          É possibile che con un IDE più aggiornato ci sia una libreria inclusa con lo stesso nome ma con metodi e proprietà differenti.

  49. marco

    PS: ho scaricato la nuova libreria e importata nella cartella librerie dell’IDE….
    ma non ha sortito effetto….

    1. Mauro Alfieri

      Ciao Marco quale libreria la IRemote ? Verifica che non vada in conflitto con quella inclusa nell’IDE e che sia adatta a questa versione.

      1. marco

        L’IDE è la versione 1.5.6 r2
        e la libreria l’ho scaricata dal link ad inizio di questa pagina…

        comunque.. ora faccio un po’ di prove e controlli e poi ti aggiorno..
        grazie 1000

        1. Mauro Alfieri

          Ciao Marco,
          come scritto quella libreria è scritta per l’IDE 0022 e non penso sia compatibile con l’IDE che stai utilizzando, dovresti adattartela.

          Mauro

  50. Fabio

    Ciao Mauro, ho caricato il tuo programma includendo la libreria IR quindi nell’IDE scrive
    #include
    #include

    lo compilo e mi da questo errore:
    error: ‘uint8_t’ does not name a type

    sapresti dirmi cosa può essere, ho fatto un po di ricerche ma non ho trovato una soluzione.
    Utilizzo: Arduino Uno e L’IDE 1.0.3

    Grazie mille

    1. Fabio

      Ciao Mauro, problema risolto, basta cambiare

      #include
      con
      #include

      nel file IRRemoteInt.h.

      1. Mauro Alfieri

        Ciao Fabio,
        sono contento per il tuo progetto.
        Purtroppo nei commenti non si vede cosa hai incollato, ed è questo il motivo per cui non faccio incollare codice nei commenti.

    2. Mauro Alfieri

      Ciao Fabio,
      se leggi, bene, nell’articolo e in molti commenti la libreria potrebbe non essere adatta alla versione di IDE che tu stai utilizzando essendo stata scritta per l’IDE 0022.
      Puoi verificare se esiste una libreria aggiornata o aggiornarla tu per adattarla alla versione dell’IDE in tuo possesso.

  51. Emanuele

    Salve, grazie per i suoi tutorial.
    Io ho realizzato un semplice progetto come il suo e ho notato che in condizioni di “riposo” cioè senza usare il telecomando il sensore restituisce dei valori a caso (li leggo con il serial monitor). ho interpretato la cosa come un rumore di fondo “ambientale” dovuto alla luce del sole o qualcos’altro di natura elettrica. Fermo restando che utilizzando il telecomando mi rileva tutti i codici pergfettamente..
    A voi capita la stessa cosa o magari il mio ricevitore è malfunzionante?
    Grazie
    saluti

    1. Mauro Alfieri

      Ciao Emanuele,
      può capitare ciò che verifichi ed hai correttamente interpretato la causa.

  52. gianluigi ricciolio

    Salve, il seguente codice è applicabile per il modulo infrarossi IR38DM?

    1. Mauro Alfieri

      Ciao Gianluigi,
      dovresti provarlo.
      Funziona di certo bene con tutti i ricevitori a 38Hz e mi sembra che il tuo sia a 38Hz, se ricordo bene.

  53. Antonello

    Ciao
    Ottimi i tuoi consigli ..ti seguo molto…
    Ti chiedevo un consiglio, rigurdo la ricezione del ricevitore infrarossi…

    E POSIBILE COLLEGARE 2 OPPURE 3 RICEVITORI INFRAROSSI ?
    allo stesso arduino da collegare 1 Analogic A0 altro Analogic A1 e la terza A3

    GRAZIE …

    1. Mauro Alfieri

      Ciao Antonello,
      si puoi collegarli ad ingressi differenti, l’importante è lo scopo per cui lo fai e come li gestisci.

  54. francesco

    ciao Mauro buongiorno sono sempre il ragazzo del PIR ahaha…..procedendo con altri esperimenti sn in possesso di un telecomando infrarossi sony con un ricevitore ir 38 dm. Il programma funziona, riconosce i codici sia in hex che dec e ho provato a far accendere un led.fino a qui tt ok. Ora quello che volevo fare era inserire 3 led di colore diversi e di farli accendere con i tasti 1,2,3 della trasmittente. Il problema è che non rileva più il segnale in ingresso. Premetto di non aver inserito per il collegamento dei led alcuna resistenza.Potrebbe essere quello il problema?in caso affermativo mi servono resistenze da 100 ohm? In attesa di risposta ti posto il codice.Ti ringrazio in anticipo per la disponibilità, oramai sei il punto di riferimento nelle applicazioni di arduino.Buona giornata.

    [ codice rimosso in automatico ]

    1. Mauro Alfieri

      Ciao Francesco, ti chiedo di rispettare le regole del blog: non pubblicare codici perché tanto vengono rimossi.
      Se dopo aver collegato i led non legge più i segnali del ricevitore IR non penso dipenda dalle resistenze sui led ma più da qualche errore nei collegamenti o nello sketch.

  55. francesco

    risolto…grazie comunque mauro..buon lavoro!!

    1. Mauro Alfieri

      Bene Francesco, se ti va di condividere la soluzione sono certo che anche ad altri tornerà utile.
      Ricorda di evitare la pubblicazione di codice nei commenti.

  56. Matteo

    Ciao Mauro, prima di tutto complimenti per il blog!
    comunque ho provato a eseguire lo sketch, ma ogni volta che provo a rilevare il codice HEX, mi escono sempre codici diversi oppure FFFFFFFF e non capisco perchè!
    ho provato con tutti i telecomandi che avevo in casa, e per ognuno era la stessa cosa! mai un codice uguale! e non capisco il perchè!
    ciao grazie!

    1. Mauro Alfieri

      Ciao Matteo, nell’articolo dovresti aver letto che ci sono solo alcuni telecomandi compatibili con questa libreria arduino e devi utilizzare quelli o realizzarti l’acquisizione dei codici con prove ripetute.
      I segnali IR, per loro natura, se sai come funzionano, sono influenzati da molti fattori ambientali e direzionali che possono causare gli effetti che rilevi.

  57. gabriele innocenti

    Ciao, leggendo i tuoi articoli, mi sono appassionato all’argomento, ho iniziato a fare delle sperimentazioni cercando di ricreare e capire il funzionamento degli sketch, qundi ho provato a realizzare un ricevitore ir per azionare una scheda relè. Lo scopo finale era quello di comandare le luci della sala, l’apricancello e luci esterne utilizzando il telecomando di casa. In pratica per la programmazione, ho fuso e personalizzato due sketch che ho trovato, uno relativo al ricevitore ir el l’altro relativo alla scheda relay. Il programma funziona e riesco a chiudere e riaprire il contatto dei relè con un tempo impostato, ma non riesco a capire di una anomalia che si verifica solo con determinati telecomandi. In pratica se premo ripetutamente un tasto del telecomando, (esempio 20 volte con frequenza di 2/3 volte al secondo) l’arduino mi entra in loop e comincia ad chiudere il contatto all’infinito anche se smetto di premere il pulsante sul telecomando. Ho provato ad inserire una parte finale in cui mettevo tutti i relè chiuso, ma l’arduino ignorava il comando fino alla pressione di un tasto qualsiasi (anche un tasto che non avevo programmato) sul telecomando. La cosa ancora più incomprensibile per me è che tutto questo non si verifica con un telecomando (sony). Ho provato a controllare la strigna sul monitor seriale è l’unica differenza è che sul sony mi restituisce un codice di 5 cifre e lettere ( 8CBC0 ), seguito da un stringa di FFFFFFFF mentre gli altri mi restituiscono un codice di 6 oppure 8 cifre (20DF8D72). Vorrei capire se tutto questo è un limite mio oppure un problema di arduino.
    grazie. gabriele innocenti

    ecco lo sketch:

    [ codice rimosso in automatico ]

    1. Mauro Alfieri

      Ciao Gabriele, così come scrivi sembra un problema del telecomando e non di arduino, considera che non tutti i codici dei telecomandi sono codificati dalla libreria IR. Inoltre gli IR sono composti da un treno di onde che potrebbe essere generato dal telecomando in modo continuo se messo in condizioni di stress.

      Io mi soffermerei a ragionare se sia la scelta migliore l’IR per un apri cancello, chiunque possieda un telecomando simile nel vicinato od una luce particolare potrebbe causare interferenze o, peggio, accendere le tue luci ed aprire il tuo cancello.

      1. gabriele innocenti

        grazie per la risposta, e per la passione che mi hai trasmesso. Non avendolo specificato prima lo faccio adesso: il progetto della scheda IR + scheda relè , sarà posizionata nel soggiorno ed avrebbe lo scopo di non alzarsi dal divano per eseguire i comandi, quindi non ci dovrebbero essere interferenze o pericoli di aperture accidentali.
        saluti

        1. Mauro Alfieri

          Ottimo,
          io il mio progetto l’ho usato per il lampadario a fibre ottiche del soggiorno, lo trovi come articolo sul blog, ma subisce tutte le interferenze dei numerosi telecomandi del soggiorno e viceversa, accendo le luci e cambiano i canali della TV 🙂 è divertente ma dovrò decidermi a riprogrammarlo con codici differenti.

  58. Massimiliano

    Ciao Mauro complimenti per l’iniziativa, io sono neofita nell’uso di arduino e volevo usarlo per comandare ingressi e volume di un preamplificatore audio che sto costruendo. diciamo che sono in fase embrionale e mi ci sto appassionando. per quanto riguarda il controllo volume ok ma cio che non riesco per ora a capire come poter fare a gestire gli ingressi sia da un selettore che dal telecomando e non fare entrare in conflitto le due tipologie di ingresso una fissa quella della manopola e l’altra del telecomando. hai qualche consiglio? grazie mille

    1. Mauro Alfieri

      Ciao Massimo,
      sei sicuro di voler utilizzare arduino per un progetto di questo tipo?
      Se proprio vuoi gestire il volume sia con IR da telecomando sia con la manopola ti consiglio di far in modo che entrambi siano connessi ad arduino e sia poi arduino a controllare lo stadio di pre amplificazione.
      Non ti nascondo che non avrei idea di come fare quest’ultima fase.

  59. Massimiliano

    grazie per la risposta Mauro. dunque forse ho formulato in maniera impropria la domanda, mi spiego meglio:
    lasciando perdere il discorso preamplificatore che puo fare un po di confusione io dovrei in definitiva azionare dei rele’ uno alla volta tramite due fonti di ingresso che sono uno un selettore e l’altro il telecomando ed entrambe devono azionare gli stessi rele, il mio dubbio e problema è che non saprei come fare una volta azionato un rele con il selettore (che quindi mi porta alto un ingresso ) a cambiare rele con il telecomando ad esempio. dovrei in qualche modo inibire l’ingresso rimasto fisso del selettore. e come? spero di essermi spiegato meglio, Grazie mille Mauro

    1. Mauro Alfieri

      Ciao Massimiliano,
      potresti collegare il selettore ad arduino, leggere il valore digitale del selettore e controllare il relé.
      In questo modo il controllo lo fai eseguire sempre ad arduino.
      Considera che il segnale IR è composto da un treno d’onda che se non controlli in modo corretto ha come effetto quello simile premi-lascia-premi-lascia-premi-lascia-premi-lascia-premi-lascia di un pulsante.

  60. morgan

    ciao mauro questi sono gli errori che mi dice il programma

    C:\Program Files\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope
    int RECV_PIN = TKD2; // the pin the IR receiver is connected to
    ^

    come posso risolverli?

    1. Mauro Alfieri

      Ciao Morgan, da quanto scrivi sembra che tu abbia semplicemente dimenticato di dire allo sketch a quale pin é connesso il ricevitore IR.
      Non stai utilizzando un mio sketch e non so dirti altro, chiedi all’autore dello sketch maggiori info se non ne vieni a capo.

  61. Roberto

    Buongiorno e complimenti per tutto!
    Purtroppo il lavoro non mi permette di cimentarmi più di tanto con arduino, quindi non sono ancora molto pratico anche se mi coinvolge sempre di più…
    Volevo chiede ma se io volessi accendere e spegnere il led con lo stesso pulsante del telecomando?
    Come faccio a controllare lo stato del LED?

    1. Mauro Alfieri

      Ciao Roberto,
      è uguale a come faresti con un pulsante semplice, ho scritto degli articoli del corso base che puoi seguire.

      1. Roberto

        ho prvato ma mi sa che sbaglio qualcosa perchè la verifica dello sketch non da errori ma il led non si accende proprio.

        [codice rimosso in automatico]

        1. Mauro Alfieri

          Ciao Roberto, in primo luogo ti chiedo, cortesemente, di rispettare le regole del blog: non é consentito incollare codice nei commenti.
          Probabilmente l’errore che commetti non é di sintassi ma di logica o interpretazione del segnale.
          Controlla con il monitor seriale che il telecomando venga riconosciuto ed il codice inviato sia corretto.

          1. Roberto

            Chiedo scusa…ho controllato diverse volte ma effettivamente il segnale che arriva é corretto…

          2. Mauro Alfieri

            Ciao Roberto,
            ora che sei certo che il codice che ti arriva è corretto prova ad impostare un if() in modo che alla ricezione del segnale corrispondente al pulsante che premi sul telecomando ti scriva sul monitor seriale sia il codice inviato sia una frase scelta da te, ad esempio: “Pulsante riconosciuto”

            Se tutto funziona ed il segnale viene riconosciuto non ti resta che sostituire le righe di Serial.println con il comando per accendere o spegnere quello che desideri controllare.

  62. Roberto

    Buonasera…probabilmente devo iniziare da percorsi più semplici…anzi sicuramente….mi sa che ometto qualche particolare.
    if (irrecv.decode(&results))…non capisco questa dicitura
    Ho messo la suddetta dicitura
    un if(result.value) che identifica il tasto del telecomando (nel mio caso il tasto power)
    e sotto un serial print che mi visualizza che codice è arrivato
    e ancora sotto un serial print che mi visualizza la scritta “prova”
    e poi metto in modalita ascolta il sensore con irrecvresume
    Risultato;
    premo il tasto power mi visualizza il codice e sotto la scritta prova,posso premerlo infinite volte che funziona, ma appena premo un qualsiasi altro tasto del telecomando si blocca tutto, come se il ricevitore non ritornasse in modalità ascolto e non ricevesse più nessun segnale neanche il precedente del tasto power.

    1. Mauro Alfieri

      Ciao Roberto,
      sembra che il tuo sketch mandi in blocco l’arduino quando riceve un segnale differente dal power, io indagherei su questo fenomeno escludendo che possa trattarsi di un errore nello sketch che hai scritto.
      La riga irrecv.decode(&results) prende il valore di result, ricevuto dal sensore IR, lo passa al metodo decode della libreria irrecv per decodificarlo e ti restituisce un valore di controllo.

      1. Roberto

        Ho provato diversi metodi ma in ognuno mi crea un problema diverso…
        esempio..se io metto
        if()
        {scrivi sul serial monitor il codice}
        if(codice == 0984)
        {scrivi sul serial “ciao”}
        appena carico lo sketch mi parte a scrivere sul serial monitor a raffica “ciao”
        Non riesco a capire la logica di tutto ciò

        1. Mauro Alfieri

          Ciao Roberto,
          stai sbagliando la sintassi, prova a leggere come funzionano le istruzioni if() {} else {} in un qualsiasi manuale base di informatica e sul sito arduino.cc

          1. Roberto

            Avevo letto qualcosa e pensavo fosse giusto…ora riguardo…grazie mille

          2. Roberto

            Ho cercato e ricercato…alla fine mettevo un ( ; ) dopo if
            Tolto e funziona…
            Grazie mille

          3. Roberto

            Buongiorno, scusa se ti disturbo ancora…è vero che avevo scritto che tutto funziona ma ho notato un piccolo problema…ho impostato il tasto power del telecomando per accednere e spegnere il led e fin qui funziona, non capisco come fa ad accendere e spegnere il led anche se premo qualsiasi altro pulsante.
            Se imposto on/off con if ( results.value == 0x900BCB5) perchè lo fa anche con 9000801, 9008881, 9004841, 9000C8C1 ecc. anche se non sono stati impostati nella if ?
            Poi se arduino e tutti i collegamenti sono in camera il LED mi si accende anche quando accendo la luce della stanza…(domanda stupida: ho una lampadina a risparmio energetico, possibile che emetta qualche segnale infrarosso?)

          4. Mauro Alfieri

            Ciao Roberto,
            così come me lo descrivi sembra proprio un problema di interferenza IR, in alternativa potrebbe essere anche un errore di interpretazione del codice che in qualche modo invia anche il codice del power, anche se mi sembra strano.

          5. Roberto

            Se faccio la prova per la codifica dei codici l’interpretazione é giusta…boh, proverò con un’altro ricevitore

          6. Mauro Alfieri

            Ciao Roberto,
            è giusta nel senso che ti arrivano codici differenti per i diversi tasti?
            In tal caso cercherei l’errore nello sketch.

          7. Roberto

            Si, arrivano i codici diversi dai diversi tasti.
            Ho impostato per il solo tasto power del telecomando che sul serial monitor mi scrivesse “POWER” e difatti lo fa, mentre se premo alri pulsanti non scrive nulla, quindi in teoria (vista la mia poca esperienza) lo sketch è giusto, se no dovrebbe scrivermi qualcosa anche se premo altri tasti no? Ho anche provato a far scrivere sul serial monitor oltre a power anche gli altri codici se premo altri pulsanti e li scrive.
            Quindi come può accettare altri codici per accendere/spegnere se non li ho impostati?

  63. Lorenzo

    Ciao Mauro, non ho commenti da fare, ma vorrei scriverti un semplice grazie per il tempo che dedichi per far si di portare questa passione comune al massimo livello in tutti noi. Da quando ho iniziato ho sempre seguito i tuoi tutorial e rendi ogni cosa di una semplicità estrema, dandomi il coraggio di partire con un progettino di domotica tutt’altro che semplice, ma i risultati li sto vedendo e anche se alla fine non sarà come lo volevo è sempre una grande soddisfazione.
    Ne approfitto per chiederti, non è che c’è in programma un tutorial per il touch screen dell’adafruit??? Ora lo sto usando a tastoni prendendo qualcosa qua e la, ma mi piacerebbe sapere esattamente cò che faccio.
    Ringraziandoti ancora di tutto ti porgo i miei più cordiali saluti e scusami se ti ho dato del tu.
    Lorenzo.

    1. Mauro Alfieri

      Ciao Lorenzo,
      grazie per il tuo contributo.
      A quale Touch Screen ti riferisci?
      Probabilmente non ne possiedo uno per studiarlo e farci dei test, se sei interessato ad approfondirne l’utilizzo ti posso consigliare di seguire il sito del produttore o di finanziarmi l’acquisto di un display identico al tuo.

  64. Lorenzo Zott

    Ciao Mauro,
    per prima cosa ti volevo anch’io ringraziare per tutti i tuoi utilissimi ed interessantissimi tutorial che ho trovato su Arduino. Ho anch’io una domanda:
    Volevo usare un vecchio telecomando della Packard Bell per comandare dei motori con Arduino. Ho visto che la maggior parte dei pulsanti del telecomando utilizzano come codice un misto tra numeri e lettere ad esempio “1809EF90” e non riesco a compilare lo sketch; mentre se inserisco solo numeri tutto funziona a dovere.. Che modifica devo fare al mio programma? All’inizio io dichiaro “int receiver = 11” devo cambiare il tipo di variabile in gioco?.
    Ti ringrazio fin da ora per la tua risposta.
    Ciao.

    Lorenzo

    1. Mauro Alfieri

      Ciao Lorenzo,
      per i codice alfanumerici usa i doppi apici (“).
      Per la seconda domanda ti invito a leggere bene quanto riportato nella descrizione dell’articolo, ho scritto chiaramente a cosa serve la linea 2 nello sketch e quel valore è da cambiare solo in casi specifici di collegamenti differenti dai miei.

  65. Luigi

    ciao mauro,
    innanzitutto colgo l’occasione per farti i complimenti per il lavoro che stai facendo su questo sito!
    ho seguito questa e altre guide, dopo aver bruciato un sensore, sono riuscito a “farlo funzionare”. il problema è che dal monitor vedo che, schiacciando lo stesso tasto ma a una distanza lievemente diversa, mi da sempre valori differenti, ma sempre in esadecimale.
    Ho provato telecomandi diversi, versioni differenti di arduino ( la 0022 e la 1.0 ); il codice è lo stesso tuo, la libreria è caricata correttamente.
    sai quale può essere il problema?
    una cosa interessante è che ho provato a lanciare l’esempio del test ( per vedere la codifica ) e mi dava a tutti errore
    grazie!

    1. Mauro Alfieri

      Ciao Luigi,
      il telecomando che stai testando è compatibile con la libreria IRremote?
      Controlla nella documentazione della libreria se il tuo telecomando è supportato, non supporta tutti i telecomanadi.

  66. MarcoLU

    Salve,
    devo prendere il segnale da un telecomando tramite arduino e far accendere e spengere un led.
    Utilizzando il codice sopra alla pressione di un tasto accade che il valore non sia sempre lo stesso quindi impossibile da utilizzare.(provato con vari telecomandi anche con quello in dotazione al kit Arduino)
    Puoi aiutarmi?

    1. Mauro Alfieri

      Ciao MarcoLU,
      di solito accade con telecomandi non supportati dalla libreria IRemote.
      Il kit arduino che possiedi è originale o acquistato su internet a basso costo? Nel primo caso mi sembra strano che il telecomando non sia tra quelli riconosciuti, nel secondo potrebbe trattarsi di un qualsiasi telecomando del quale non troverai facilmente le specifiche e le librerie di supporto.
      Per fare un test semplice prova ad utilizzare con questo telecomando uno sketch diverso tra quelli proposti nel blog, in alternativa prova un telecomando di quelli indicati nella documentazione della libreria.

  67. Giovanni

    Tutorial veramente ben fatto. Ho cercato su molti siti web, ma questo è veramente il migliore!

    1. Mauro Alfieri

      Grazie Giovanni.

  68. Carlo

    Ciao Mauro, complimenti per il progetto molto interessante.
    Volevo sfruttare questo tuo articolo per cambiare il canale del decoder mediaset premium da un’altra stanza.

    L’ idea che mi è venuta è la seguente:
    1) realizzare un’ app android che funge da telecomando e invia una stringa ad Arduino via bluetooth

    2) Arduino riceve la stringa corrispondente ad un tasto del telecomando e invia al decoder il segnale infrarosso attraverso un led infrarosso.

    Secondo te è fattibile?

    1. Mauro Alfieri

      Ciao Carlo,
      si, a mio avviso lo è.
      Mi piacerebbe pubblicare il tuo progetto quando lo avrai ultimato.

      1. Carlo

        Certo mauro, ne sarei onorato. Ho fatto i primi test e sta procedendo bene.
        Appena ho ultimato ti aggiorno.

        1. Mauro Alfieri

          Bene Carlo.

  69. Mario

    Ciao Mauro, da poco mi sono avvicinato al mondo Arduino e grazie alle tue guide ho imparato già alcune cose, anche se semplici. Seguendo questa tua guida, ho pensato di caricare questo sketch in un attiny85 per accendere dei led a distanza, ma purtroppo non va! Ho seguito anche altre guide, ma senza trovare soluzione. Tu mi potresti indicarmi come risolvere questo problema? Se è possibile ovviamente! Grazie in anticipo. 🙂

    1. Mauro Alfieri

      Ciao Mario,
      non l’ho mai provato su un ATTiny85 posso provare ad aiutarti se mi dai una analisi più dettagliata di cosa accade sul microcontrollore e cosa accade a livello di codice per cui non funziona.
      Solo dicendo non va potrebbe essere qualsiasi cosa ed è impossibile aiutarti.

      1. Mario

        Ciao e grazie per la risposta. Dunque il tuo codice viene caricato correttamente sull’attiny, ma quando pigio il tasto sul telecomando ( è un samsung per tv) che ho impostato per accendere, i led si comportano come quelli rossi presenti nei vecchi tv quando si usa il telecomando (non so come spiegarmi!). Mi hanno consigliato di rimuovere il serial.begin e utilizzare la libreria SoftwareSerial.
        Ho visto alcuni video su youtube è ho visto che si può utilizzare l’attiny85 per accendere i led a distanza, ma purtroppo nessuno spiega come fare.

        1. Mauro Alfieri

          Ciao Mario,
          non so come aiutarti a parte suggerirti di fare dei test.
          Prova a seguire il suggerimento che hai trovato.

  70. Marco

    Ciao 😉 sono alle prime armi e sto costruendo una macchinina e per farla muovere con il telecomando ho bisogno di questa libreria ma non va perche quando faccio la verifica mi da IRrecvDump:error: ‘results’ was not declared in this scope…. ed errori del genere cosa ho sbagliato?

    1. Mauro Alfieri

      Ciao Marco,
      sei certo di aver copiato bene lo sketch ? la variabile results è definita nelle prime righe dello sketch;

  71. Daniele

    Ciao Mauro
    Ho installato la libreria e copiato in programma per ricevere in raggi ir, ma quando tento di caricare lo sketch sul mio arduino uno me lo nega facendomi notare il seguente errore:

    C:\Users\Daniele_2\Desktop\Arduino Uno\arduino-nightly\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‘TKD2’ was not declared in this scope

    int RECV_PIN = TKD2; // the pin the IR receiver is connected to

    ^

    exit status 1
    Errore durante la compilazione

    Il problema è che anche un altro utente ha avuto un errore simile, ma il bello è che ho seguito passo passo le tue istruzioni.
    Aiutami!!! Non so come uscirne fuori!

    1. Mauro Alfieri

      Ciao Daniele,
      non capisco cosa tu stia leggendo !!!
      In entrambi i miei sketch non compare la linea citata nell’errore.
      Il pin a cui ho connesso il mio ricevitore IR è

      int receiver = 11;

      per cui TKD2 non so cosa sia.

      1. Daniele

        è quello che mi sono chiesto anch’io! Infatti non capisco cosa centra “TKD2”.
        Grazie comunque per l’interesse 🙂

        1. Claudio

          Ho un problema, ho acquistato un ricevitore infrarossi montato su una schedina su cui è montato anche il trasmettitore, allego il link dell’oggetto :
          http://www……/5V-IR-Infrared-Remote-Decoder-Encoding-Transmitter-Receiver-Wireless-Module-/201436489519?
          Non so come collegarlo o meglio l’ho collegato ma non sembra funzionare con il tuo sketch, ma il ricevitore funziona perchè lampeggia quando uso un telecomando verso il ricevitore… idee?

          1. Mauro Alfieri

            Ciao Claudio,
            innanzitutto ti chiedo di rispettare le regole del blog, non è possibile incollare link a portali di aste on-line e simili.
            In merito al tuo componente non lo conosco, il produttore dovrebbe rilasciarti della documentazione per utilizzarlo o meglio non acquistare prodotti non dotati di documentazione.
            Il mio sketch è stato provato con il TSOP1738

  72. Marco

    Ciao, volevo chiederti una semplice curiosità, premetto di non avere letto tutti i commenti perché sono troppi XD con questo sistema Arduino é in grado di clonare il codice che riceve e ritrasmetterlo uguale a proprio comando?

    1. Mauro Alfieri

      Ciao Marco,
      non mi sembra che nei commenti esista risposta a questa domanda per cui ti rispondo.
      E’ buona regola leggere sempre i commenti ( pochi o troppi che siano ) se cerchi risposte.
      Penso si possa fare anche se non ho mai provato in prima persona.

  73. Kevin

    Ciao, è possibile che non mi funziona perché sto usando il sensore VS 1838B?
    Compilo ed eseguo il programma ma quando vado ad aprire il monitor seriale e schiaccio un qualsiasi pulsante del telecomando non mi appare niente.

    1. Mauro Alfieri

      Ciao Kevin,
      non conosco quel sensore, controlla nel datasheet le differenze.

  74. Lodovico

    Ciao sono Lodovico, dopo vari tentativi ho deciso di rivolgermi a te, ho eseguito alla perfezione la tua guida, adesso avevo bisogno di una variante, io non sono in grado e confidavo in un tuo aiuto, ho la necessita di accendere un led (relay) alla pressione di un tasto del telecomando e di spegnerlo solamente al suo rilascio, mi puoi aiutare Grazie

    1. Mauro Alfieri

      Ciao Lodovico,
      il miglior aiuto che posso darti è con i miei tutorial spiegati linea per linea, leggendo e comprendendo come funzionano sarai in grado di realizzare quello che desideri.

      1. Lodovico

        Grazie per la risposta velocissima, Scusami, non voglio essere pesante, io sono riuscito solo parzialmente con questa soluzione, ma se voglio tenere più a lungo premuto ,quindi eccitato il relay, così non funziona

        [[ codice rimosso in automatico ]]

        1. Mauro Alfieri

          Ciao Lodovico,
          ti chiedo la cortesia di leggere bene le regole del blog, sono poche e semplici.
          Il non rispetto delle regole causa eliminazione del commento e dell’autorizzazione a pubblicarne di nuovi.
          Se vuoi aumentare il tempo di pressione devi far in modo che alla pressione parta un contatore con millis() che conteggi il tempo di pressione e possa discernere in funzione del tempo di pressione applicato.

  75. Lodovico

    Scusate ma non sapevo, comunque ho già perso troppo tempo, sono un principiante e non ho il tempo di sperimentare, comprerò un telecomando con scheda che ha già la funzione temporary. perchè devo aiutare un anziano vicino invalido per comandare le tapparelle dal letto Grazie ugualmente

    1. Mauro Alfieri

      Ciao Lodovico,
      come ho spesso scritto: se la soluzione esiste nel mondo commerciale probabilmente è più conveniente, certificata e rapida.

  76. luca

    Come devo comportarmi se il telecomando genera tanti codici per uno stesso pulsante ?
    sto usando il sensore vs1838b con arduino.

    1. Mauro Alfieri

      Ciao Luca,
      innanzitutto verifica che il telecomando sia compatibile con quel sensore, ossia che le frequenze dei led di trasmissione ed il sensore che usi siano le stesse.
      Poi verifica che non esista già una codifica nota, che puoi utilizzare.

  77. simone

    ciao mauro,ho collegato invece di un led un motore dc,se volessi far si che il motore si fermi al rilascio del pulsante(tipo macchinina radiocomandata per intenderci) come dovrei fare?perche cosi facendo devo impostare un pulsante di fermo.grazie

    1. Mauro Alfieri

      Ciao Simone,
      ti invito a leggere i tutorial sul controllo motori con shield adeguate per comprendere come fare, i motori devono essere controllati medianti driver o ponteH per non danneggiare arduino o genuino.
      Per altre tecniche base di programmazione puoi seguire il mio corso arduino on-line gratuito

      1. Simone

        Ciao,so come collegare un motore,intendevo per farlo fermare al rilascio del pulsante con un telecomando ir e seguendo questo tutorial..

        1. Mauro Alfieri

          Ciao Simone,
          basta semplicemente che tu tenga il motore in movimento fino a quando ricevi il segnale dal telecomando.
          Come concetto di fondo è identico a collegare un pulsante meccanico ed impostare lo sketch in modo che fintanto che ricevi il valore corrispondente alla pressione del pulsante il motore giri ed al rilascio si fermi.

  78. Francesco

    Ciao Mauro. Grazie per i tuoi favolosi tutorial!!
    Usando le tue istruzioni e lo sketch sono riuscito a decodificare i segnali di due telecomandi che ho a disposizione. Poi ho usato i codici per usare lo sketch per accendere e spegnere il led, ma succede una cosa strana. Quando do il comando per l’accensione (quello che nello sketch dà il digitalWrite HIGH), il led si spegne e viceversa con il comando di spegnimento, che fa accendere il led. Mi sai dire dove posso cercare l’errore?
    Grazie.

    1. Mauro Alfieri

      Ciao Francesco,
      sembra che tu abbia collegato il led in modo errato.

      1. Francesco

        OK, avevi ragione. Ho modificato il cablaggio e adesso funziona.
        Grazie mille.
        Ma anche tante grazie per lo straordinario lavoro che hai fatto con i tuoi tutorial: sono una fonte continua di informazioni scritte in maniera accessibile anche per i “dummies” come me!!!

  79. Simone Mastroianni

    Ciao mauro, io uso già da un po arduino leonardo, il mio problema è che se premo un pulsante, esce un numero (io ho messo DEC al codice) così esce un valore decimale. Se ne premo un’altro , esce lo stesso identico. Per favore, mi aiuteresti con questo problema?

    1. Mauro Alfieri

      Ciao Simone,
      non ho compreso il problema, il pulsante che premi è sul telecomando?
      Sei certo che il modello di telecomando sia compatibile con la libreria?

  1. Mauro Alfieri » Blog Archive » Tutorial Arduino – IR con TSOP31238

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

  2. Mauro Alfieri » Blog Archive » Arduino progetto per TiDiGino

    […] 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 | Telecomandi | Scoop.it

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

  4. Se non è zuppa e pan bagnato! | Elettronico per caso...

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>