目标
1、用红外接收传感器接收MINI红外遥控器发送信号,利用串口打印读取按键数值。
2、用mini红外遥控器控制LED灯的亮灭。
需准备的实验材料
Arduino UNO开发板 红外接收传感器
mini红外遥控器 LED发光模块
配套USB数据线 配套杜邦线若干
Arduino IDE软件
本期的实验内容
通过mini红外遥控器发送信号给红外接收传感器,控制LED灯的亮灭,当按下1号按键时,LED灯点亮,当按下2号按键时LED灯熄灭。
接线图(仅供参考)

Arduino UNO <------> 红外接收传感器模块
5V <------> VCC
GND <------> GND
3 <------> DAT
Arduino UNO <------> LED发光模块
5V <------> VCC
GND <------> GND
6 <------> IN
需要一个红外通信接收的第三方库文件“IRremote”。
下载链接:https://pan.baidu.com/s/1FuwJP-zyI_13J4HF5Phkkg
提取码:2fl9
下载后解压,把解压后的整个文件夹复制放到Arduino安装包的“libraries”文件夹里面。
接下来我们用红外接收传感器,通过串口来获取红外遥控器1和2按键的数值,参考程序如下
#include <IRremote.h> //红外接收库文件
long ir_item;
IRrecv irrecv_3(3);
decode_results results_3;
void setup(){
Serial.begin(9600);
irrecv_3.enableIRIn(); //红外接收管脚为3
}
void loop(){
if (irrecv_3.decode(&results_3)) {
ir_item=results_3.value;
String type="UNKNOWN";
String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
if(results_3.decode_type>=1&&results_3.decode_type<=13){
type=typelist[results_3.decode_type];
}
Serial.print("IR TYPE:"+type+" ");
Serial.println(ir_item);
delay(1000);
irrecv_3.resume();
} else {
Serial.print("");
delay(1000);
}
}
打开串口监视器,按下mini红外遥控器的1和2按键,查看数值

我们通过mini红外遥控器发送信号给红外接收传感器,来控制LED等的亮灭。当我们按下按键1时,LED灯亮;按下按键2时,LED灯熄灭。程序如下(仅供参考)。
#include <IRremote.h> //红外接收库文件
long ir_item;
IRrecv irrecv_3(3);
decode_results results_3;
void setup(){
pinMode(6, OUTPUT); //定义6号为输出管脚
irrecv_3.enableIRIn();
}
void loop(){
if (irrecv_3.decode(&results_3)) {
ir_item=results_3.value;
String type="UNKNOWN";
String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
if(results_3.decode_type>=1&&results_3.decode_type<=13){
type=typelist[results_3.decode_type];
}
Serial.print("IR TYPE:"+type+" ");
if (ir_item == 16724175) { //当红外接收器接收到按键1时,LED灯点亮
digitalWrite(6,HIGH);
} else if (ir_item == 16718055) { //当红外接收器接收到按键2时,LED灯熄灭
digitalWrite(6,LOW);
}
irrecv_3.resume();
} else {
}
}
