Arduino教程入门系列-第二十课-红外遥控器介绍

这一节我们介绍怎么在Arduino下使用红外遥控器~



这里我们会用到“库”,Arduino的一大特点就在于他有很多高手们写好的“库”,能用几行很简单的代码实现很复杂的功能。



“库”可以理解为把一些复杂的代码封装后的函数。Arduino的所用到的语言比如:Serial.begin(9600);delay(1);等也是把底层封装成的一个个库。



这次我们会用到IRremote这个库,这个库支持众多的红外协议,如:NEC, Sony SIRC, Philips RC5, Philips RC6 等。



首先我们先把这次使用到的IRremote库下载回来。


网盘下载Arduino_IRremote_master.zip
http://pan.baidu.com/s/1dExdYV3



把压缩包解压到Arduino IDE的libraries文件夹中


2012-11-18 12-44-54.png

2012-11-18 15:29 上传
(108.46 KB)





比如我们这次使用的IRremote可以解压到Arduino_IRremote_master文件夹中。



需要注意的是在库文件夹下要直接显示.cpp和.h文件,绝对不可以把这些库文件再套一层二级目录,这样子就会导致IDE无法识别。


2012-11-18 12-45-18.png

2012-11-18 15:29 上传
(103.89 KB)





接下来我们需要用到一个38K的红外接收器,如果,红外接收器的三个引脚分别为OUT,GND,VCC。


IMGP9417_调整大小.JPG

2012-11-18 16:08 上传
(152.58 KB)





按照下图连接好Arduino。


2012-11-18 15-08-06.png

2012-11-18 15:29 上传
(92.19 KB)




IMGP9422_调整大小.JPG

2012-11-18 16:30 上传
(164.87 KB)





然后把代码放入IDE编译下载



ARDUINO 代码复制打印

#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.print(results.value, HEX); // 显示红外编码
    Serial.print(",  bits: ");           
    Serial.println(results.bits); // 显示红外编码位数
    irrecv.resume();    // 继续等待接收下一组信号
  }  
  delay(600); //延时600毫秒,做一个简单的消抖
}<br />



然后打开串口监视器,波特率设置为9600,使用遥控器对着红外头按下按键,串口监视器上就会出来当前按键的红外编码与位数。


2012-11-18 13-27-49.png

2012-11-18 15:29 上传
(29.15 KB)





显示irCode:FFFFFFFF,bits:32是因为遥控器上没有做中断,误码导致,只要按一下松开,再按一下松开就没问题。
via - 极客工坊

标签: Arduino教程