这几天在看红外遥控器和红外接收器的介绍,接线很简单,
实物连接图如下:
网上给的例子也很简单,具体的代码如下:
#include <IRremote.h> // 使用IRRemote函数库
const int irReceiverPin = 2; // 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600); // 开启串口,波特率为9600
irrecv.enableIRIn(); // 启动红外解码
}
void loop()
{
if (irrecv.decode(&results)) { // 解码成功,把数据放入results变量中
// 把数据输入到串口
Serial.print("irCode: ");
Serial.println(results.value, HEX); // 显示红外编码
//Serial.print(", bits: ");
//Serial.println(results.bits); // 显示红外编码位数
irrecv.resume(); // 继续等待接收下一组信号
}
delay(600); //延时600毫秒,做一个简单的消抖
}
程序下载到Arduino后,运行也很顺利,可以向串口发送红外遥控的每个键的编码。
然后就在想,可以做一个上位机程序,为每个遥控器建立一个编码和按键的对应表,这样以后就可以很方便的查找指定遥控器的编码了。所以就写了一个简单的管理程序,用户可以新建遥控器对象,然后打开串口,点击红外遥控器中的按键,程序会自动对按键编码进行登记,然后用户可以在编辑按键编码对应的命令。程序界面如下:
最后是程序代码:
https://github.com/guochao2299/InfraredRayControllerKeyMapping