我正在使用IR接收器和发射器进行项目,但是接收器有问题(接收器型号:TSOP1756)。 从协议来看,它可以在56khz上工作,但是问题是,我可以更改代码以解码来自不同/多频的IR信号,例如38kHz的电视遥控器和40khz的AC遥控器。 我正在为项目使用IRremote库。
我曾尝试过使用不同型号的红外接收器,但它们都不以不同的频率工作。
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
// In case the interrupt driver crashes on setup, give a clue
// to the user what's going on.
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // Start the receiver
Serial.println("Enabled IRin");
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
delay(100);
}
我希望接收十六进制代码,但是当我发送不同频率的信号时,我会立即收到FFFFFFFF。
如果有人帮助我,我将不胜感激
答案 0 :(得分:0)
您误解了红外传输的工作原理。
为了使接收器能够将控制信号与背景红外噪声区分开来,该信号将以更高的频率进行调制。即它不是连续的红外灯,而是一系列短暂的闪光。系列之间的距离编码零和一,但是闪光灯本身具有预定义的频率。在您的示例中为56kHz。
接收器具有内置电路,可以滤除背景噪声,并检测何时以特定频率闪烁,并向其输出引脚输出逻辑电平。其原理图旨在仅检测一个特定频率。 For example TSOP1736-36kHz,TSOP1740-40kHz,TSOP1756-56 kHz。
仅输出,不从MCU接收任何控制逻辑。
因此,答案为否:您无法通过软件更改调制频率。您必须用其他型号替换接收器。