项目二十三 红外发射#
1.实验说明#
在这个套件中,有一个红外发射传感器,它主要用到了红外发射管。它是一个能发射出特定波长红外光的二极管。我们可以将传感器连接到单片机上,利用编程,控制传感器发射出38KHz调制信号,可适应市面上各种红外接收头,以便红外线接收传感器能接收到,从而实现红外无线通讯。
实验中,我们利用红外发射传感器发射对应数据,每发射一次数据,传感器上的D1 LED就闪烁一次。
2.实验器材#
keyes brick 红外发射传感器*1
keyes UNO R3开发板*1
传感器扩展板*1
3P 双头XH2.54连接线*1
USB线*1
3.接线图#

4.测试代码#
编译上传之前我们先安装库文件IRremote.h与SimpleTimer.h,安装方法请看到Arduino 基础教程中查看。
注意需要使用我们提供的库文件不要随意更新,否则可能出现不兼容情况。
// 引入红外遥控库,用于发送和接收红外信号
#include <IRremote.h>
// 引入SimpleTimer库,用于实现定时器功能(非阻塞式延迟)
#include <SimpleTimer.h>
// 创建一个红外发送对象,使用数字引脚3作为红外信号输出引脚
IRsend irsend_3(3);
// 创建一个SimpleTimer定时器对象
SimpleTimer timer;
// 定时器回调函数:当定时器触发时执行此函数
void Simple_timer_1() {
// 发送一个32位的RC5红外编码信号,数据值为0x89ABCDEF
irsend_3.sendRC5(0x89ABCDEF, 32);
}
// 初始化函数,在程序开始时执行一次
void setup() {
// 设置定时器:每1000毫秒(1秒)触发一次Simple_timer_1函数
// L后缀表示长整型,确保时间值正确
timer.setInterval(1000L, Simple_timer_1);
}
// 主循环函数,会重复执行
void loop() {
// 运行定时器,检查并执行到期的定时任务
// 这种非阻塞方式允许在等待期间执行其他操作
timer.run();
}
5.代码说明#
#include <IRremote.h>添加红外库,这个库包含发射红外信号与接收红外信号的功能IRsend irsend_3(3);创建红外发射对象,并设置红外信号的输出引脚为D3irsend_3.sendRC5(0x89ABCDEF, 32);发射数据值为0x89ABCDEFdelay(1000);延时很重要,一定要有不然发射红外信号太快会乱的
6.测试结果#
按照接线图接线,上传测试代码成功,红外发射模块就会每个一秒钟发射一次红外值,发射时模块上的红色LED灯会闪烁一下。