Arduino红外遥控系列教程2013——IRremote库进阶与调试

惯例,在开始之前,先推荐本系列的前五篇教程。

Arduino红外遥控系列教程2013——发射与接收[链接]

Arduino红外遥控系列教程2013——红外转码[链接]

Arduino红外遥控系列教程2013——红外转码扩展应用1[链接]

Arduino红外遥控系列教程2013——红外协议之NEC[译文][链接]

Arduino红外遥控系列教程2013——IRremote多协议红外遥控扩展库[译文][链接]



重磅推出

Arduino IRremote Wiki 语法手册中文版[链接]


IMG_3874_副本.jpg

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


  1. 兼容性

    IRremote库不仅支持Arduino的大部分主板,还支持其他非常多的主板和芯片。图中绿色部分是默认的引脚。

Support Boards.png

2013-3-9 16:04 上传
(20.79 KB)



大家也可以通过修改库IRremoteint.h文件来选择其他引脚。例如Arduino不是只能用数字引脚3,还可以使用数字引脚9作为其红外发射的输出。而这点在与其他库Timer冲突时显得格外有用,因为有时候红外不工作的可能原因之一就是定时器冲所突导致的。注意:此修改需要重启Arduino界面才能生效!笔者只测试过UNO的Pin 9。

Pin choose.png

2013-3-9 16:04 上传
(14.39 KB)




  1. 调试模式

    当大家遇到接受红外编码无法识别时,可以激活这个可选的功能——DEBUG模式。如图通过修改库中IRremote.h文件,将#define DEBUG前面的注释符号“//”去掉后保存文件。关闭Arduino 界面并重启,然后下载样例代码examples\IRrecvDemo.ino。

DEBUG mode.jpg

2013-3-9 16:04 上传
(41.62 KB)



打开串口软件,按下遥控器按键,此时所显示的内容会有天壤之别。如图,

DEBUG.jpg

2013-3-9 16:04 上传
(89.04 KB)



大家可以根据每个信号(Mark)或者空格(Space)的时间长短来对接收的编码数据进行分析。


  1. 协议编码的长度

Protocol bits length.png

2013-3-9 16:04 上传
(4.97 KB)




  1. NEC协议测量时间的定义标准。

    IRremote库本身默认允许20%的容差。超过该范围则视为无效编码数据。

Protocol NEC time define.png

2013-3-9 16:04 上传
(4.68 KB)




  1. 容差

    大家也可以通过修改库IRremoteint.h文件来增大容差范围。例如:测试红外接收发现经常丢码。可用前面提到过的DEBUG模式来分析测量时间是否有临界值。如有则可以考虑增大容差范围

Tolerance.png

2013-3-9 16:04 上传
(23.97 KB)





6.红外接收状态显示

可以通过增加一条代码,实现接收红外数据时板载LED (Pin 13)闪烁,显示红外接收的状态。

irrecv.blink13(1); // 接收时闪烁板载LED 13

blink13.png

2013-3-9 16:04 上传
(38.73 KB)




  1. NEC的重复编码

    可以在库IRremote.h文件中进行修改。

NEC_Repeat.png

2013-3-9 16:04 上传
(7.3 KB)




  1. 新增协议

    如果大家希望增加自己的协议的话,可以在库文件IRremote.cpp中添加。

    通过调用私有类,可以很轻松的添加新协议,具体可以参考NEC的协议代码。

SendNEC.png

2013-3-9 16:04 上传
(27.8 KB)


via - 极客工坊

标签: Arduino教程