Arduino红外遥控系列教程2013——IRremote库进阶与调试
惯例,在开始之前,先推荐本系列的前五篇教程。
Arduino红外遥控系列教程2013——发射与接收[链接]
Arduino红外遥控系列教程2013——红外转码[链接]
Arduino红外遥控系列教程2013——红外转码扩展应用1[链接]
Arduino红外遥控系列教程2013——红外协议之NEC[译文][链接]
Arduino红外遥控系列教程2013——IRremote多协议红外遥控扩展库[译文][链接]
重磅推出
Arduino IRremote Wiki 语法手册中文版[链接]
2013-3-9 16:06 上传
(146.42 KB)
从今年1月初开始,断断续续的学习Arduino与红外遥控。没想到已经写了五篇教程,还整理了Wiki。本来当初只是想研究下红外协议,将来好给BOXZ做通讯。没想到系统的学习下来,还能整理出些教程和心得,分享给大家,希望对红外感兴趣的玩家能有所帮助。这是第六篇,可能是本系列的最后一篇教程了,然后就要把精力转移到将其用于BOXZ的通讯之中。最后感谢作者编写的IRremote库和一直以来支持我们的极客们!
正文
IRremote库进阶与调试
这里分享一些IRremote库的使用经验,以及部分作者在原文中没有提到过的重要信息。
http://v.youku.com/v_show/id_XNTI0MTcyMzg0.html
- 兼容性
IRremote库不仅支持Arduino的大部分主板,还支持其他非常多的主板和芯片。图中绿色部分是默认的引脚。
2013-3-9 16:04 上传
(20.79 KB)
大家也可以通过修改库IRremoteint.h文件来选择其他引脚。例如Arduino不是只能用数字引脚3,还可以使用数字引脚9作为其红外发射的输出。而这点在与其他库Timer冲突时显得格外有用,因为有时候红外不工作的可能原因之一就是定时器冲所突导致的。注意:此修改需要重启Arduino界面才能生效!笔者只测试过UNO的Pin 9。
2013-3-9 16:04 上传
(14.39 KB)
- 调试模式
当大家遇到接受红外编码无法识别时,可以激活这个可选的功能——DEBUG模式。如图通过修改库中IRremote.h文件,将#define DEBUG前面的注释符号“//”去掉后保存文件。关闭Arduino 界面并重启,然后下载样例代码examples\IRrecvDemo.ino。
2013-3-9 16:04 上传
(41.62 KB)
打开串口软件,按下遥控器按键,此时所显示的内容会有天壤之别。如图,
2013-3-9 16:04 上传
(89.04 KB)
大家可以根据每个信号(Mark)或者空格(Space)的时间长短来对接收的编码数据进行分析。
- 协议编码的长度
2013-3-9 16:04 上传
(4.97 KB)
- NEC协议测量时间的定义标准。
IRremote库本身默认允许20%的容差。超过该范围则视为无效编码数据。
2013-3-9 16:04 上传
(4.68 KB)
- 容差
大家也可以通过修改库IRremoteint.h文件来增大容差范围。例如:测试红外接收发现经常丢码。可用前面提到过的DEBUG模式来分析测量时间是否有临界值。如有则可以考虑增大容差范围
2013-3-9 16:04 上传
(23.97 KB)
6.红外接收状态显示
可以通过增加一条代码,实现接收红外数据时板载LED (Pin 13)闪烁,显示红外接收的状态。
irrecv.blink13(1); // 接收时闪烁板载LED 13
2013-3-9 16:04 上传
(38.73 KB)
- NEC的重复编码
可以在库IRremote.h文件中进行修改。
2013-3-9 16:04 上传
(7.3 KB)
- 新增协议
如果大家希望增加自己的协议的话,可以在库文件IRremote.cpp中添加。
通过调用私有类,可以很轻松的添加新协议,具体可以参考NEC的协议代码。
2013-3-9 16:04 上传
(27.8 KB)
via - 极客工坊