IR receiver - can it read ANY remote?

I am working on a project where I need to control RGB light fixture with Arduino. This Chinese fixture doesn't have DMX, it uses remote control only. My goal is to be able to switch the light on; turn red; start fade(breathe). So I thought that by obtaining IR codes from the remote and sending these with Arduino would be the easy way to go. However Arduino can not read anything from this remote. But I can read fine from my Samsung remote.
So my question is: can I use any kind of remote or the ones with listed protocols(NEC, Sony, Samsung etc) only.
I use similar part and the code from this tutorial:

#include <IRremote.h>

const byte IR_RECEIVE_PIN = 4;

void setup()
Serial.println("IR receive test");

void loop()
if (IrReceiver.decode())
unsigned long keycode = IrReceiver.decodedIRData.command;
Serial.println(keycode, HEX);
if ((IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT))

Similar is not same. IR remote control must match wavelength, carrier frequency, protocol and command values. If only one of these differs then it most likely fails.

IR detectors are very wide-band. I seriously doubt wavelength would be an issue.

Wavelength shouldn't be an issue, but the carrier frequency will. I tried for myself: 38 kHz and 36 kHz are quite incompatible. The worst thing is that, instead of just not working if mixed up, they do output some data, but in a buggy and unreliable way.

Cannot confirm that, i used 38khz receiver with 36khz remote without problems. mismatched protocol is much more serious issue

The IR receivers I tried are CHQ1838 and TSOP1738. Both give good results with my Samsung and few other remotes.
So you say that ANY remote must work, regardless of protocol give some kind of reading.

So I tried the code from examples RecieveDump and I get data as follows:

Protocol=UNKNOWN Hash=0x0 1 bits received

Raw result in internal ticks (50 us) - with leading gap
+ 3
Raw result in microseconds - with leading gap
+ 150

Result as internal ticks (50 us) array - compensated with MARK_EXCESS_MICROS=20
uint8_t rawTicks[1] = {3}; // Protocol=UNKNOWN Hash=0x0 1 bits received

Result as microseconds array - compensated with MARK_EXCESS_MICROS=20
uint16_t rawData[1] = {130}; // Protocol=UNKNOWN Hash=0x0 1 bits received

Pronto Hex as string
char ProntoData[] = "0000 006D 0001 0000 0007 06C3 "

Pronto Hex as string seems to be useful Data - it is consistent to each button. Can I send the same configuration or I need to convert it?
BTW the buttons are really bad / you never know when they work.

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