IR receiver returns FFFFFFFF

So I have an IR remote control


and an IR receiver, tsop1838

Both of these components were in the same Arduino kit so I suppose that there is no problem between their communication.
I connected the receiver's signal pin with the arduino pin 7, the VCC with 5V and GND with GND
Then I uploaded this code

#include <IRremote.h>

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);
}

void loop(){
  if (irrecv.decode(&results)){
        Serial.println(results.value, HEX);
        irrecv.resume();
 }
}

For every button I was pressing the result was FFFFFFFF and not a different hex for each button.

1 Like

Try this code

//www.elegoo.com
//2016.12.9

#include "IRremote.h"

int receiver = 7; // Signal Pin of IR receiver to Arduino Digital Pin 11

/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'

/*-----( Function )-----*/
void translateIR() // takes action based on IR code received

// describing Remote IR codes 

{

  switch(results.value)

  {
  case 0xFFA25D: Serial.println("POWER"); break;
  case 0xFFE21D: Serial.println("FUNC/STOP"); break;
  case 0xFF629D: Serial.println("VOL+"); break;
  case 0xFF22DD: Serial.println("FAST BACK");    break;
  case 0xFF02FD: Serial.println("PAUSE");    break;
  case 0xFFC23D: Serial.println("FAST FORWARD");   break;
  case 0xFFE01F: Serial.println("DOWN");    break;
  case 0xFFA857: Serial.println("VOL-");    break;
  case 0xFF906F: Serial.println("UP");    break;
  case 0xFF9867: Serial.println("EQ");    break;
  case 0xFFB04F: Serial.println("ST/REPT");    break;
  case 0xFF6897: Serial.println("0");    break;
  case 0xFF30CF: Serial.println("1");    break;
  case 0xFF18E7: Serial.println("2");    break;
  case 0xFF7A85: Serial.println("3");    break;
  case 0xFF10EF: Serial.println("4");    break;
  case 0xFF38C7: Serial.println("5");    break;
  case 0xFF5AA5: Serial.println("6");    break;
  case 0xFF42BD: Serial.println("7");    break;
  case 0xFF4AB5: Serial.println("8");    break;
  case 0xFF52AD: Serial.println("9");    break;
  case 0xFFFFFFFF: Serial.println(" REPEAT");break;  

  default: 
    Serial.println(" other button   ");

  }// End Case

  delay(500); // Do not get immediate repeat


} //END translateIR
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode"); 
  irrecv.enableIRIn(); // Start the receiver

}/*--(end setup )---*/


void loop(){
  if (irrecv.decode(&results)){
    translateIR(); 
    irrecv.resume(); // receive the next value
  }  
}

I tried it and this is what my serial monitor displays.

Yes, that corresponds to holding any button down, that's your 0xFFFFFFFF code. Are you just pressing them quickly or holding them?

No. But even if I did that there should be at least one hex that is not ffffffff in the serial monitor, but the only thing there is ffffffff. I also tried putting a delay(500) after Serial.println() so even if I held down the buttons, I would see a hex that is not ffffffff

  • That is a code sent when a button is held down. i.e. Repeat Code
  • Unless you need to use it, write your sketch to ignore the FFFFFFFF

I tried to ignore ffffffff so it prints only the key down events but then nothing was printing. That's the current code:

//www.elegoo.com
//2016.12.9

#include "IRremote.h"

int receiver = 7; // Signal Pin of IR receiver to Arduino Digital Pin 11

/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'

/*-----( Function )-----*/
void translateIR() // takes action based on IR code received

// describing Remote IR codes 

{

    switch(results.value)

    {
        case 0xFFA25D: Serial.println("POWER"); break;
        case 0xFFE21D: Serial.println("FUNC/STOP"); break;
        case 0xFF629D: Serial.println("VOL+"); break;
        case 0xFF22DD: Serial.println("FAST BACK");    break;
        case 0xFF02FD: Serial.println("PAUSE");    break;
        case 0xFFC23D: Serial.println("FAST FORWARD");   break;
        case 0xFFE01F: Serial.println("DOWN");    break;
        case 0xFFA857: Serial.println("VOL-");    break;
        case 0xFF906F: Serial.println("UP");    break;
        case 0xFF9867: Serial.println("EQ");    break;
        case 0xFFB04F: Serial.println("ST/REPT");    break;
        case 0xFF6897: Serial.println("0");    break;
        case 0xFF30CF: Serial.println("1");    break;
        case 0xFF18E7: Serial.println("2");    break;
        case 0xFF7A85: Serial.println("3");    break;
        case 0xFF10EF: Serial.println("4");    break;
        case 0xFF38C7: Serial.println("5");    break;
        case 0xFF5AA5: Serial.println("6");    break;
        case 0xFF42BD: Serial.println("7");    break;
        case 0xFF4AB5: Serial.println("8");    break;
        case 0xFF52AD: Serial.println("9");    break;
        //case 0xFFFFFFFF: Serial.println(" REPEAT");break;  

        //default: 
            //Serial.println(" other button   ");

    }// End Case

    delay(500); // Do not get immediate repeat


} //END translateIR
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
    Serial.begin(9600);
    Serial.println("IR Receiver Button Decode"); 
    irrecv.enableIRIn(); // Start the receiver

}/*--(end setup )---*/


void loop(){
    if (irrecv.decode(&results)){
        translateIR(); 
        irrecv.resume(); // receive the next value
    }  
}

Change your loop for this:

void loop(){
  if (irrecv.decode()) {
        Serial.println(irrecv.decodedIRData.decodedRawData, HEX);
        irrecv.resume();
 }
}

Now it works perfectly. Thank you so much!

Is your remote from the Elegoo kit? It looks similar to the one I had from that kit, maybe yours is different.
In your kit, did they provide examples specific to your device?
What library version are you using? Did you try any of the examples there, such as ReceiveDump (if it has one? Mine does)

No, mine is from an Arduino kit I bought. The comment in my code about Elegoo kit is because I copy pasted your code. I don't know from where I bought the kit though, my dad bought it for me.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.