在库管理器中搜索安装IRRemote库,它能使arduino任一数字引脚接受引脚,但所用的IR接收模块必须集成了带通滤波器,才能正确的接受数据;
把你的2.X程序升级到3.x版本的更新:ReceiveDemo
从 3.1 版本开始,用于发送的 PWM 的生成由软件完成,从而节省了硬件定时器并启用任意输出引脚进行发送。
如果您使用的是不使用-flto标志进行编译的(旧)Arduino 内核,在编译期间出现有关 begin() 的错误消息,您可以在IRRemote.h中激活#define SUPPRESS_ERROR_MESSAGE_FOR_BEGIN行。
- 现在将原有IRrecv IrReceiver(IR_RECEIVE_PIN)或IRsend IrSender更新至IRreceiver和IRsender对象:红外接收使用IrReceiver,红外发射使用IrSender.
- 启动接收与发送:
- 接收(在 setup() 中调用):
- IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);启动接收,并指定引脚;开启Arduino主板L灯反馈;
- IrReceiver.begin(IR_RECEIVE_PIN, DISABLE_LED_FEEDBACK);启动接收,并指定接收引脚;关闭Arduino 主板L灯反馈;
- 对于发送(在 setup() 中调用):
- IrSender.begin(IR_SEND_PIN, ENABLE_LED_FEEDBACK);启动发送,并指定引脚;开启Arduino主板L灯反馈;
- IrSender.begin(IR_SEND_PIN, DISABLE_LED_FEEDBACK);启动发送,并指定引脚;关闭Arduino主板L灯反馈;
- 接收(在 setup() 中调用):
- IrReceiver.decode() 接收到红外线信号,返回true/1,如果没有接收到红外线信号,就返回false/0;
- 解码后的值现更新至IrReceiver.decodedIRData中:
- IrReceiver.decodedIRData.decodedRawData 当前按键编码值
- IrReceiver.decodedIRData.protocol 遥控器协议值
- IrReceiver.resume():在使用decode()函数接收完红外信号后,必须使用resume()函数来重置IR接收器,才能再接收另一个红外线信号。
- Overflow, Repeat and other flags(溢出、重复和其他标志)现在IrReceiver.receivedIRData.flags.
- 很少使用:results.rawbufandresults.rawlen必须替换为IrReceiver.decodedIRData.rawDataPtr->rawbufand IrReceiver.decodedIRData.rawDataPtr->rawlen。