网上的大部分红外遥控的代码,都是如下
#include < IRremote.h >
int RECV_PIN = 3;
IRrecv irrecv(RECV_PIN);// 设置红外接收器的引脚
decode_results results;// 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600);
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // 启动红外解码
Serial.println("Enabled IRin");
}
void loop() {
if (irrecv.decode(&results)) {// 解码成功,把数据放入results变量中
Serial.println(results.value, HEX); // 显示红外编码
irrecv.resume(); // 继续等待接收下一组信号
}
delay(100);
}
但是我使用了这段代码后,不管按下任何按键都只能读取到FFFFFFFF
但是,使用Mind+,却可以正常的去读到
于是,我查看了GitHub的公告,发现4.X后的版本,
I
rSender.begin(DISABLE_LED_FEEDBACK)不在起作用
GitHub - Arduino-IRremote/Arduino-IRremote:Arduino的红外远程库:使用多种协议发送和接收红外信号
解决方案:
1、可以将库(IRremote)版本改成旧版,根据网上的资料2.X版本应该可以使用(我没有测试过)
2、使用新版的代码
#include <IRremote.h>
int RECV_PIN = 3;//设置红外遥控引脚
long results;//接收红外数据
void setup()
{
Serial.begin(9600);//设置波特率
IrReceiver.begin(RECV_PIN);// 设置红外接收器的引脚
}
void loop() {
if (IrReceiver.decode())
{
results=IrReceiver.decodedIRData.decodedRawData;// 解码成功,把数据放入results变量中
Serial.println(results,HEX); // 显示红外编码
IrReceiver.resume();
}
delay(100);
}
具体可以参考