项目: 将现有的Sky遥控器转换为蓝牙HID设备(以控制PC)
步骤:
问题: 使用现有电路,我想读取控制器发送到IR LED的输出值。我不知道该怎么做。
我已将电线焊接到IR LED的(+)正极端子,并尝试使用以下草图代码读取它:
#include <IRremote.h>
int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value);
irrecv.resume(); // Receive the next value
}
}
我的逻辑是,如果发送到IR LED的数据与接收器读取的数据相同,我可以直接从电路读取数据而无需IR LED / IR接收器。然而,这并没有真正起作用,我收到的结果是不正常的。
当我按下按钮时,大多数时间数据都会打印在串行监视器上,但这些数据并不一致。有时,当我按下按钮时,不会打印任何数据。串行监视器结果按下“向右”按钮5次:
1915173721
1967414055
按其他箭头按钮时会有更多结果:
749184133
4255908178
2645846893
3808018029
1874349767
489623152
4272685797
1488398475
2816865927
1510598699
1286666972
881703980
1976667380
我是以错误的方式来做这件事的吗?我想是这样的:/
任何建议都将不胜感激
谢谢!
答案 0 :(得分:0)
IR LED的信号输出是用特定载波频率调制的编码脉冲。对于大多数遥控器,载波频率为38KHz。但你仍然可以找到其他载波频率,如40KHz,甚至56KHz。
IR接收器设计用于接收以特定载波频率调制的IR信号。接收器然后将移除载波并仅输出编码脉冲。
因此,当您移除IR LED并直接读取信号时,您获得的结果与从IR接收器输出读取的结果不同。
在将信号馈入串行读卡器之前,您需要使用一些滤波电路来移除载波。