概述
红外遥控系统主要分为调制、发射和接收三部分。红外接收模块中的一体化红外接收头,内部集成了红外接收电路,包括红外检测二极管,放大器,限幅器,带通滤波电容,积分电路,比较器等。能够将接收到的调制波进行解调。
元件清单:
Zduino UNO × 1;
OJ传感器扩展板 × 1;
USB数据线 × 1 ;
3p杜邦线 × 2 ;
38K红外接收模块 × 1;
红外遥控器 × 1;
要使用遥控器控制Arduino,首先我们得知道遥控器各按键对应的编码,不同的遥控器,不同的按键,不同的协议,都对应的不同的编码。
连线示意图:
Arduino示例程序:
/* www.openjumper.cn 日期:2013.5.18 IDE 版本:1.0.1 功能:获取遥控器各按键的编码值 */ #include <IRremote.h> int RECV_PIN = 11; // 红外一体化接收头连接到Arduino 11号引脚 IRrecv irrecv(RECV_PIN); decode_results results; // 用于存储编码结果的对象 void setup() { Serial.begin(9600); // 初始化串口通信 irrecv.enableIRIn(); // 初始化红外解码 } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // 接收下一个编码 } }
打开串口监视器,对着红外接收模块按下按键
遥控器的每个按键都对应了不同的编码,不同的遥控器使用的编码也不相同。
出现“FFFFFFFF”编码,是因为我使用的是NEC协议的遥控器,当按住某按键不放时,其会发送一个重复编码“FFFFFFFF”。而其他协议的遥控器,则会重复发送对应的编码。
你可以在以下网址找到常见品牌遥控器的编码
http://lirc.sourceforge.net/remotes/
遥控器参考编码值:
FFA25D | FFE21D | |
FF22DD | FF02FD | FFC23D |
FFE01F | FFA857 | FF906F |
FF6897 | FF9867 | FFB04F |
FF30CF | FF18E7 | FF7A85 |
FF10EF | FF38C7 | FF5AA5 |
FF42BD | FF4AB5 | FF52AD |
红外遥控实验利用遥控器的ON OFF按键实现对LED的开通和关断(在已知两种按键编码制的基础上,否则先确定按键编码)。
接线示意图:
红外接收模块对应连接11号IO,LED模块对应连接13号IO。
Arduino示例程序:
/*
www.openjumper.cn
日期:2013.5.18
IDE 版本:1.0.1
功能:红外遥控器控制LED灯开关
*/
#include <IRremote.h>
int RECV_PIN = 11; // 红外一体化接收头连接到Arduino 11号引脚
int LEDpin = 13; //定义LED输出引脚
IRrecv irrecv(RECV_PIN);
decode_results results; // 用于存储编码结果的对象
void setup()
{
pinMode(LEDpin,OUTPUT);
irrecv.enableIRIn(); // 初始化红外解码
}
void loop() {
if (irrecv.decode(&results))
{
Serial.println( results.value);
if( results.value == 0xFFA25D) //若接收到按键ON按下的指令,打开LED
{
digitalWrite(LEDpin,HIGH);
}
else if(results.value == 0xFFE21D) //接收到OFF按键按下的命令,关闭LED
{
digitalWrite(LEDpin,LOW);
}
irrecv.resume(); // 接收下一个编码
}
}
连线实物图
观察现象:遥控器对准红外接收模块,按下ON键时LED点亮。按下OFF键时LED熄灭。