Gebruik IRremote.h

Ik wil een eenvoudige 17 button IRzender gebruiken, maar de regel "Serial.println(results.value, HEX) print ook vaak FFFFFFFF.
ik wil alleen maar geldige meldingen zien (in switch).
Wat is er fout?

WHAT DOES THIS PROGRAM:
- The program shows  the HEX code of an IR-sender on the serial monitor

HARDWARE:
-  Arduino Nano
-  IR-sensor module (ouput pin connectod to pin D10 on Nano
-  Simple IR sender (0..9, star, gat, up, down, right, left, OK), i.e 17 buttons

TESTED ON:
IDE 1.8.19 and Arduino Arduino Nano V3

*/

//===================================================================================
//LIBRARIES
#include <IRremote.h>   //Version 4.5.0


//===================================================================================
//DECLARATIONS
IRrecv irReceiver(10);  // Create an IR receiver object on pin 10
decode_results results;
unsigned long key_value = 0;    // variable to store the key value

//===================================================================================
void setup() 
{
  Serial.begin(9600);
  irReceiver.enableIRIn();  // Start the IR receiver
}

//===================================================================================
void loop() 
{
  if (irReceiver.decode(&results)) 
  {  // Check if there's an IR signal
    //if (results.value != 0xFFFFFFFF) {key_value = results.value;}
    
    //Serial.println(results.value, HEX);   // Print the value of the received signal

    switch (results.value) {
        case 0xE318261B:
            Serial.println ("Knop 1 ingedrukt");
            break;
        case 0x511dbb:
            Serial.println ("Knop 2 ingedrukt");
            break;
        case 0xEE886D7F:
            Serial.println ("Knop 3 ingedrukt");
            break;
        case 0x52A3D41F:
            Serial.println ("Knop 4 ingedrukt");
            break;
        case 0xD7E84B1B:
            Serial.println ("Knop 5 ingedrukt");
            break;
        case 0x20FE4DBB:
            Serial.println ("Knop 6 ingedrukt");
            break;
        case 0xF076C13B:
            Serial.println ("Knop 7 ingedrukt");
            break;
        case 0xA3C8EDDB:
            Serial.println ("Knop 8 ingedrukt");
            break;
        case 0xE5CFBD7F:
            Serial.println ("Knop 9 ingedrukt");
            break;
        case 0x97483BFB:
            Serial.println ("Knop 0 ingedrukt");
            break;
        case 0xC101E57B:
            Serial.println ("Knop STER ingedrukt");
            break;
        case 0xF0C41643:
            Serial.println ("Knop HEKJE ingedrukt");
            break;
        case 0x3D9AE3F7:
            Serial.println ("Knop UP ingedrukt");
            break;
        case 0x8C22657B:
            Serial.println ("Knop LEFT ingedrukt");
            break;
        case 0x488F3CBB:
            Serial.println ("Knop OK ingedrukt");
            break;
        case 0x449E79F:
            Serial.println ("Knop RIGHT ingedrukt");
            break;
        case 0x1BC0157B:
            Serial.println ("Knop DOWN ingedrukt");
            break;    
        }
    key_value = results.value;
    irReceiver.resume();              // Enable receiving of the next signal
    delay (100);
  }
}

:warning: Gebruik alstublieft Engels in de algemene secties. Verplaatst naar de pagina’s voor het Nederlands.


Probeer de syntaxis van de nieuwste versie van de bibliotheek.

#include <IRremote.hpp>
const byte irReceivePin = 10;

void setup() {
  Serial.begin(115200);
  IrReceiver.begin(irReceivePin);
}

void loop() {
  if (IrReceiver.decode()) {
    Serial.print("0x");
    Serial.println(IrReceiver.decodedIRData.command, HEX);
    IrReceiver.resume();
  }
}

Thanks Jackson, it works but I got many results after only one press.
I added delay(200); before IrReceiver.resume();

Are the results the long press key code ?