日常生活中我们会接触到各式各样的遥控器,电视机、空调、机顶盒等都有专用的遥控器,很多智能手机也在软硬件上对红外遥控做了支持,可以集中遥控绝大部分家用电器。本篇介绍红外遥控相关原理及应用,通过红外遥控器控制 Uno 板载 LED 灯。
红外遥控原理
红外遥控主要由红外发射和红外接收两部分组成。
红外发射和接收的信号其实都是一连串的二进制脉冲码,高低电平按照一定的时间规律变换来传递相应的信息。为了使其在无线传输过程中免受其他信号的干扰,通常都将信号调制在特定的载波频率上(38K红外载波信号),通过红外发射二极管发射出去,而红外接收端则要将信号进行解调处理,还原成二进制脉冲码进行处理。
红外遥控器发射的38K红外载波信号由遥控器里的编码芯片对其进行编码。当按下遥控器按键时,遥控器发出红外载波信号,红外接收器接收到信号,程序对载波信号进行解码,通过数据码的不同来判断按下的是哪个键。
红外遥控库安装
Arduino 要使用红外遥控,需要 IRremote 库文件。文件可以在 Arduino IDE 的库中下载。
在IDE中点击「工具」—「管理库」,查找「IRremote」进行安装。
材料准备
- Arduino Uno 主板
- 红外接收器模块
- 红外遥控器
- 杜邦线若干
电路连接
红外线接收模块的 + 引脚连接到 Arduino 的 5V 引脚。
红外线接收模块的 – 引脚连接到 Arduino 的 GND 引脚。
红外线接收模块的 S 引脚连接到 Arduino 的数字引脚 11。
编写代码
1.打开Arduino IDE软件。
2.创建一个新的空白项目。
3.在项目中导入IRremote库。点击菜单栏中的“工具”,然后选择“库管理器”。在库管理器中搜索“IRremote”,然后点击“安装”按钮进行安装。
4.在项目中编写以下代码:
#include <IRremote.h> int RECV_PIN = 11; int LED_PIN = 13; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // 启动红外接收器 pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, HIGH); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); if (results.value == 0xFFE01F) // 开灯的红外码值 { digitalWrite(LED_PIN, LOW); } else if (results.value == 0xFFA857) // 关灯的红外码值 { digitalWrite(LED_PIN, HIGH); } irrecv.resume(); // 接收下一个红外信号 } delay(100); }
5.将 Arduino 主板连接到计算机,并上传代码到 Arduino 主板。
测试
1.打开串口监视器。
2.按下红外遥控器上的不同按键,观察串口监视器中显示的红外码值。
3.当按下遥控器上的开灯按键时,Arduino 上的 LED 灯应该亮起。
4.当按下遥控器上的关灯按键时,Arduino 上的 LED 灯应该熄灭。
发表评论
要发表评论,您必须先登录。