我正在使用 espressif esp32 devkit v1 板,并正在尝试创建一个通用红外遥控器。我正在使用 IRremote 库(https://github.com/Arduino-IRremote/Arduino-IRremote)。在运行 ReceiveDump 示例收集原始 IR 数据(使用 TSOP38238)时,我遇到了#define MARK_EXCESS_MICROS 20
. 该示例打印一个使用 MARK_EXESS_MICROS “补偿”的数组,如下所示:
Serial.print(F("Result as internal ticks (50 us) array - compensated with MARK_EXCESS_MICROS="));
Serial.println(MARK_EXCESS_MICROS);
IrReceiver.compensateAndPrintIRResultAsCArray(&Serial, false);
Serial.print(F("Result as microseconds array - compensated with MARK_EXCESS_MICROS="));
Serial.println(MARK_EXCESS_MICROS);
IrReceiver.compensateAndPrintIRResultAsCArray(&Serial, true);
稍后,当我发送存储的 IR 代码(使用 IR LED)时,我的电视仅在 MARK_EXCESS_MICROS 为 0 时响应(打开/关闭),但我的 AC 不响应任何 MARK_EXCESS_MICROS 值。
所以这是我的问题:
- MARK_EXCESS_MICROS 是什么,我们为什么需要它?
- 不同的设备是否需要不同的 MARK_EXCESS_MICROS 值?
- 我如何有效地使用这个值?