Problemi nel far rispondere il LED ai comandi del telecomando

Salve a tutti, ho un piccolo problema con uno sketch Arduino con libreria IRremote.
In pratica quando compilo e carico il programma, anche se il tasto del telecomando corrisponde a ‘E0E040BF’, il Led che dovrebbe accendersi non lo fa. Eppure sul monitor seriale non da problemi dato che il TSOP4838 è funzionante.

Questo è lo sketch:

#include <IRremote.h>

int RECV_PIN = 3;
int ledPin = 7;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
 Serial.begin(9600);
 pinMode(7, OUTPUT);
 irrecv.enableIRIn(); // Start the receiver
}

void loop() {
 if (irrecv.decode(&results)) {
   if (results.decode_type == RC5) {
     Serial.println("RC5: ");
   }
   Serial.println(results.value, HEX);
   irrecv.resume();
 }
 if ( results.value == 'E0E040BF'){ 
   digitalWrite(ledPin, HIGH);
   }
}

Ciao,
prova ad accendere il led subito dopo il serial.print:

 Serial.println(results.value, HEX);
 if ( results.value == 'E0E040BF'){ 
    digitalWrite(ledPin, HIGH);
    }
    irrecv.resume();

il resume reistanzia il driver ir o come si dice...

Buona notte :slight_smile:

Purtroppo ancora niente :o
Il monitor seriale legge il comando del telecomando ma il led ancora non si accende.
Mi sembra stranissimo.
Eppure il LED non è bruciato e i collegamenti sono tutti a posto.
Non so se mi sbaglio ma potrebbe essere possibile che la stringa non sia valida.

Semplicemente il comando NON è una stringa ma un numero long che per comodità ti viene dato in formato esadecimale, più semplice da leggere, devi cambiare questo:

if(results.value == 'E0E040BF')

in questo:

if(results.value == 0xE0E040BF)

0xE0E040BF=3772793023
Quindi anche questo va bene:

if(results.value == 3772793023)

… lo stavo cercando :slight_smile:

if(irrecv.decode(&results)) {
      if(varIRrec1!=results.value && results.value != 0xFFFFFFFF){
        varIRrec1=results.value;
        if(aa<5) {
          CodIR[aa]=char(decodeIR(varIRrec1));
          Serial.println(CodIR[aa],HEX);
          aa++;tAutoIR=millis();
        }
      }    
      irrecv.resume();
    }

Qui memorizzo una sequenza di tasti in CodIR (casomai servisse)

Bisogna poi anche verificare una cosa. Alcuni telecomandi, quando tieni lo stesso tasto premuto, inviano sempre il codice di quel tasto. Alcuni telecomandi invece inviano una volta sola il codice del tasto e poi un valore fisso , di solito 0xFFFFFFFF