Arduino教程(提高篇)——红外遥控(接收篇)
奈何col 于 2012-8-6 20:55 编辑
此篇我们一起学习玩红外遥,作者将对红外遥控原理和例程进行简单的说明,若有不足或遗漏希望大家指出和修正。
一:红外遥控原理:
红外遥控是由红外发射和红外接收系统组成
1、红外接收:接收电路是一种集成红外线接收和放大一体的一体化红外接收器模块,能够完成从红外线接收到输出与TTL电平信号兼容的所有工作,他适用于红外线遥控和红外线数据传输。接收器做成的红外接收模块只有三个引脚,信号线,VCC,GND。与arduino和其他单片机连接通信非常方便。
原件连接示意图如下:
这里我们使用的了OPEN JUMPER的红外接收套件,直接连接到传感器扩展板即可使用
2、红外发射:红外发射的遥控器发射的38K红外载波信号是由遥控器里的编码芯片对其进行编码。下面用TC9012芯片了解下编码方式。它是以一段引导码,用户码,数据码,数据反码组成,利用脉冲的时间间隔来区别是0还是1信号(高电平低电平之比约为1:1时被认为是信号0,),而编码就是由这些0 、1信号组成。同一个遥控器的用户码是不变的,用数据吗不同来分辨遥控器按的键不同。当按下遥控器按键时,遥控器发送出红外载波信号,红外接收器接收到信号时程序对载波信号进行解码,通过数据码的不同来判断按下的是哪个键。单片机由接收到的01信号进行解码,由此判断遥控器按下的是什么键。
(编码方式详细参考附件)
TC9012红外遥控集成芯片.pdf
二、例程:用遥控器控制食人鱼LED灯的亮灭,并用串口输出LED当前状态。
第一步:下载arduino红外遥控库安装在Libraries目录下。(提供的红外遥控库包含了各种遥控器的发射接收函数,只需调用其内部函数即可轻松使用遥控器进行各种制作)
IRremote.zip
第二步:下载例程(作者使用arduino1.0.1版本)
[C] 纯文本查看 复制代码
#include <IRremote.h>int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); //初始化红外遥控
pinMode(12,1);
}void loop() {
if (irrecv.decode(&results)) {
if(results.value==16753245) //确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。
{
digitalWrite(12,1); //点亮LED
Serial.println("turn on LED"); //串口显示开灯
}
else if(results.value==16736925) //确认接收到的第一排按键2的编码
{
digitalWrite(12,0); //熄灭LED
Serial.println("turn off LED"); //串口显示关灯
}
irrecv.resume(); // 接收下一个值
}
}
第三步:按键操作,观察LED亮灭情况及串口显示器。
红外控制库发布地址:https://github.com/shirriff/Arduino-IRremote
via - arduino中文社区