【雕爷学编程】Arduino动手做(71)---红外遥控器及接收模块之控制Uno板载LED(D13)灯亮灭(点动任意键)
雕爷学编程,Arduino动手做,开源硬件,创客传感器,红外遥控器及接收模块
文章共1,990字 · 阅读需要大约7分钟
一键AI生成摘要,助你高效阅读
问答
·
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验七十一:HX1838红外无线遥控套件红外扩展模块(遥控器+接收板)
红外遥控器、发射及接收模块相关实验
一、实验环境
1、实验所需硬件清单
继电器模块X1
红外发射模块X1
红外接收模块X3
有源蜂鸣器模块X1
Arduino Uno开发板 X1
杜邦线 若干(备了10条)
LED发光二极管(蓝色)X1
220欧姆限流电阻(1/8W)x1
红外遥控器(3键、17键与20键)X3
Proto Shield 原型扩展板(带mini面包板)X1
4、程序九:开源图形编程(Mind+、编玩边学)以及运行后串口数据
查询黑色17键红外遥控器1~0计10个键值编码
5、程序十:通过红外遥控器控制Uno板载LED(D13)灯亮灭(点动任意键)
(1)参考开源代码(Arduino):
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
3.1 HX1838红外无线遥控套件红外扩展模块(遥控器+接收板)系列实验
安装库:打开IDE—工具—管理库—搜索IRremote库—安装(V2.2.3)
程序十:通过红外遥控器控制Uno板载LED(D13)灯亮灭(点动任意键)
硬件:使用黑色3键遥控器
实验接线:将红外接收模块接在Arduino UNO的数字2引脚,LED接D13
*/
#include <IRremote.h>
#define MAX_TIME 150 // 代码之间的最大毫秒数
#define LED_PIN 13
long lastPressTime = 0;
int state = LOW;
IRrecv irrecv(2); //定义红外接收器的引脚为D2
decode_results results;
void setup()
{
pinMode(LED_PIN, OUTPUT); // 引脚13 LED为输出状态
irrecv.enableIRIn(); // 启动接收红外
}
void loop() {
if (irrecv.decode(&results)) {
if (1) { // 只要按下任何按钮,都能触发代码(点亮LED)
if (state == LOW) {
state = HIGH; // 按下按钮,因此将状态设置为“高电平”
digitalWrite(LED_PIN, HIGH);
}
lastPressTime = millis();
}
irrecv.resume(); // 接收下一个值
}
if (state == HIGH && millis() - lastPressTime > MAX_TIME) {
state = LOW;
digitalWrite(LED_PIN, LOW);
}
}
(2)实验场景图
6、程序十一:黑色3键红外遥控器控制LED(D13)灯亮灭
(1)参考开源代码(Arduino):
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
3.1 红外遥控器及接收模块系列实验
安装库:打开IDE—工具—管理库—搜索IRremote库—安装(V2.2.3)
程序十一:黑色3键红外遥控器控制LED(D13)灯亮灭
硬件:使用黑色3键遥控器(前二个按键)
接线:将红外接收模块接在UNO的数字D2引脚,LED接D13
注意:原键值HEX码,前面要加上“0x”
*/
#include <IRremote.h> //导入红外遥控库
int RECV_PIN = 2; //定义红外接收器的引脚为D2
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
pinMode(LED_BUILTIN, OUTPUT); // 13引脚,设置为输出模式
Serial.begin(9600);
irrecv.enableIRIn(); // 初始化红外接收器
Serial.println("正常启动");
digitalWrite(LED_BUILTIN, LOW);
}
void loop() {
if (irrecv.decode(&results)) //检查是否接收到红外遥控信号
{
Serial.print("遥控键值=");
Serial.print(results.value, HEX);
if (results.value == 0xFF02FD) //检查是否接收到点亮LED指令代码(原码FF02FD)
{
Serial.println(" 点亮LED");
digitalWrite(LED_BUILTIN, HIGH);
}
if (results.value == 0xFF9867) //检查是否接收到熄灭LED指令代码(原码FF9867)
{
Serial.println(" 熄灭LED");
digitalWrite(LED_BUILTIN, LOW);
}
irrecv.resume(); //接收下一指令
}
delay(100);
}
(2)黑色3键遥控器串口接收信息截图
更多推荐
已为社区贡献42条内容
所有评论(0)