现在红外遥控器非常便宜,在Arduino项目里可以考虑选用红外遥控器。譬如,遥控小车、遥控全彩灯带等。
要应用红外遥控器的,必须先知道它的编码规则,也就是,按下某个键时,Arduino接收到的是个什么样的数值串?
红外接收头是个集成组件,输出是数字值。我们接D11口。Arduino板上电后,拿红外遥控器对准红外接收头,按下任一键,如果组件的红色LED闪烁了,就说明组件是好,并已与Arduino接通。然后在IDE里输入以下测试代码,编译并上传。需用到的红外遥控库IRremote,是在GiHub里下载的。在代码里就可以包含头文件IRremote.h。头文件里声明了一个类IRrecv,按这个类定义一个对象irrecv,它的参数RECV_PIN,就是指定组件连接哪个数字口。
上电运行代码,打开串口监视器。依次按下遥控器上的按键,记下显示在串口监视器里对应的编码。发送编码信息到PC机的语句是Serial.println(results.value, HEX);,其中有一个参数HEX,指定在串口监视器里是以16进制数显示的。
#include
int RECV_PIN = 11; //define input pin on Arduino
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, HEX);
irrecv.resume(); // Receive the next value
}
}
我们手头只有三个红外遥控器,分别有16键、17键、21键。下面是我们记录的编码。
16键NEC编码
0 | FF9867 | * | FF6897 |
1 | FFA25D | # | FFB04F |
2 | FF629D | 上 | FF18E7 |
3 | FFE21D | 下 | FF4AB5 |
4 | FF22DD | 左 | FF10EF |
5 | FF02FD | 右 | FF5AA5 |
6 | FFC23D | ||
7 | FFE01F | ||
8 | FFA857 | ||
9 | FF906F |
17键NEC编码
0 | FF9867 | * | FF6897 |
1 | FFA25D | # | FFB04F |
2 | FF629D | 上 | FF18E7 |
3 | FFE21D | 下 | FF4AB5 |
4 | FF22DD | 左 | FF10EF |
5 | FF02FD | 右 | FF5AA5 |
6 | FFC23D | OK | FF38C7 |
7 | FFE01F | ||
8 | FFA857 | ||
9 | FF906F |
21键NEC编码
静音 | FFA25D | 停止 | FF629D | 播放暂停 | FFE21D |
设置 | FF22DD | 向上 | FF02FD | 退出 | FFC23D |
向左 | FFE01F | 确认 | FFA857 | 向右 | FF906F |
模式 | FF6897 | 向下 | FF9867 | 音源 | FFB04F |
重复 | FF30CF | 音效 | FF18E7 | 声道 | FF7A85 |
音量+ | FF10EF | 快退 | FF38C7 | 快进 | FF5AA5 |
音量- | FF42BD | 上曲 | FF4AB5 | 下曲 | FF52AD |
这三个都是NEC制式编码。每个键发6个16进制数。连续两个FF后,接着的4个16进制数就是NEC编码的有效位。如果你按住不放,出来的是一连串FFFFFF。
有这个Demo,加上编码表,你就可以随心所欲开发你的红外遥控了。
页面更新:2024-04-16
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号