红外接收器多频

时间:2019-07-17 09:45:44

标签: c++ arduino arduino-ide receiver

我正在使用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。

如果有人帮助我,我将不胜感激

1 个答案:

答案 0 :(得分:0)

您误解了红外传输的工作原理。

为了使接收器能够将控制信号与背景红外噪声区分开来,该信号将以更高的频率进行调制。即它不是连续的红外灯,而是一系列短暂的闪光。系列之间的距离编码零和一,但是闪光灯本身具有预定义的频率。在您的示例中为56kHz。

接收器具有内置电路,可以滤除背景噪声,并检测何时以特定频率闪烁,并向其输出引脚输出逻辑电平。其原理图旨在仅检测一个特定频率。 For example TSOP1736-36kHz,TSOP1740-40kHz,TSOP1756-56 kHz。

仅输出,不从MCU接收任何控制逻辑。

因此,答案为:您无法通过软件更改调制频率。您必须用其他型号替换接收器。