电子说
相关知识
红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用。
组成:红外遥控器 + 红外接收器
基本原理:红外遥控的发射威廉希尔官方网站 是采用红外发光二极管来发出经过调制的红外光波;红外接收威廉希尔官方网站 由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器。
发射部分:通过功率放大调制后的编码信号,再经由发射威廉希尔官方网站 向外发射调制后的指令编码。
接收部分:接收到已调制的编码信号并进行放大解调,还原出对应的编码信号。
威廉希尔官方网站 搭建
所需材料
ArduinoUNO * 1
红外接收模块 * 1
红外遥控器 * 1
红黄蓝绿LED各一
直流电机 * 1
杜邦线若干
接线方式
接收器引脚定义:
"-"接UNO的"GND"
"S"接UNO的信号端口
中间的引脚接UNO的5V
程序编写
练习一:读取红外遥控器的键值
编程实现通过串口读取红外遥控器各个键位对应的键值。
图形化方式:
打开串口监视器,按下红外遥控器上的按键,可以在监视器上读取到对应的键值。正确的键值模式为“FF”开头的6位十六进制数字。
键值对应列表:
/* 项目名称:红外键值读取
* 项目时间:2022.02.23
* 项目作者:MRX
*/
#include < IRremote.h >
int RECV_PIN = 3;
IRrecv irrecv(RECV_PIN);// 设置红外接收器的引脚
decode_results results;// 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600);
Serial.println("Enabling IRin");
irrecv.enableIRIn(); // 启动红外解码
Serial.println("Enabled IRin");
}
void loop() {
if (irrecv.decode(&results)) {// 解码成功,把数据放入results变量中
Serial.println(results.value, HEX); // 显示红外编码
irrecv.resume(); // 继续等待接收下一组信号
}
delay(100);
}
练习二:红外遥控灯
编程实现红外遥控开关不同颜色的灯。
威廉希尔官方网站 连接:
图形化方式:
代码方式:代码中的0x表示为16进制
/* 项目名称:红外控制LED
* 项目时间:2022.02.23
* 项目作者:MRX
*/
#include < IRremote.h >
int RECV_PIN = 3;
int red_Pin = 9;
int green_Pin = 10;
int yellow_Pin = 11;
int blue_Pin = 12;
IRrecv irrecv(RECV_PIN);// 设置红外接收器的引脚
decode_results results;// 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // 启动红外解码
for(int i = 9;i <= 12;i++){
pinMode(i,OUTPUT);
}
}
void loop() {
if (irrecv.decode(&results)) {// 解码成功,把数据放入results变量中
Serial.println(results.value, HEX); // 显示红外编码
switch(results.value){
case 0xFF6897:
digitalWrite(9,HIGH);
break;
case 0xFF30CF:
digitalWrite(10,HIGH);
break;
case 0xFF18E7:
digitalWrite(11,HIGH);
break;
case 0xFF7A85:
digitalWrite(12,HIGH);
break;
case 0xFF10EF:
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
break;
}
irrecv.resume(); // 继续等待接收下一组信号
}
}
switch...case...:
switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。
全部0条评论
快来发表一下你的评论吧 !