找回密码
 立即注册

QQ登录

只需一步,快速开始

本帖最后由 lxf 于 2020-8-17 13:31 编辑

第33课 红外控制LED灯


目标

1、用红外接收传感器接收MINI红外遥控器发送信号,利用串口打印读取按键数值
2、用mini红外遥控器控制LED灯的亮灭

实验材料

Arduino UNO开发板
红外接收传感器
mini红外遥控器
LED发光模块
配套USB数据线
配套杜邦线若干
Arduino IDE软件

图片1.png
硬件对照图

内容

通过mini红外遥控器发送信号给红外接收传感器,控制LED灯的亮灭,当按下1号按键时,LED灯点亮,当按下2号按键时LED灯熄灭。

接线图

图片2.png
(Arduino UNO开发板与红外接收传感器、LED灯的连接方式)

Arduino UNO     <------>   红外接收传感器模块
              5V         <------>            VCC
          GND          <------>           GND
               3           <------>           DAT
Arduino UNO     <------>   LED发光模块
            5V           <------>            VCC
          GND          <------>           GND
            6              <------>            IN

需要一个红外通信接收的第三方库文件“IRremote”。
提取码:2fl9
下载后解压,把解压后的整个文件夹复制放到Arduino安装包的“libraries”文件夹里面。

1、通过红外接收传感器,串口打印读取mini红外遥控器上的1和2号按键数值。

程序实现代码

  1. #include <IRremote.h>  //红外接收库文件
  2. long ir_item;
  3. IRrecv irrecv_3(3);
  4. decode_results results_3;
  5. void setup(){
  6.   Serial.begin(9600);
  7.   irrecv_3.enableIRIn();  //红外接收管脚为3
  8. }
  9. void loop(){
  10.   if (irrecv_3.decode(&results_3)) {
  11.     ir_item=results_3.value;
  12.     String type="UNKNOWN";
  13.     String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
  14.     if(results_3.decode_type>=1&&results_3.decode_type<=13){
  15.       type=typelist[results_3.decode_type];
  16.     }
  17.     Serial.print("IR TYPE:"+type+"  ");
  18.     Serial.println(ir_item);
  19.     delay(1000);
  20.     irrecv_3.resume();
  21.   } else {
  22.     Serial.print("");
  23.     delay(1000);
  24.   }
  25. }
复制代码

打开串口监视器,按下mini红外遥控器1与2号键,查看结果

图片3.png

2、通过mini红外遥控器发送信号给红外接收传感器,控制LED灯的亮灭,当按下1号按键时,LED灯点亮,当按下2号按键时LED灯熄灭。

程序实现代码

  1. #include <IRremote.h>  //红外接收库文件
  2. long ir_item;
  3. IRrecv irrecv_3(3);
  4. decode_results results_3;
  5. void setup(){
  6.   pinMode(6, OUTPUT);  //定义6号为输出管脚
  7.   irrecv_3.enableIRIn();
  8. }
  9. void loop(){
  10.   if (irrecv_3.decode(&results_3)) {
  11.     ir_item=results_3.value;
  12.     String type="UNKNOWN";
  13.     String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
  14.     if(results_3.decode_type>=1&&results_3.decode_type<=13){
  15.       type=typelist[results_3.decode_type];
  16.     }
  17.     Serial.print("IR TYPE:"+type+"  ");
  18.     if (ir_item == 16724175) {  //当红外接收器接收到按键1时,LED灯点亮
  19.       digitalWrite(6,HIGH);  
  20.     } else if (ir_item == 16718055) {  //当红外接收器接收到按键2时,LED灯熄灭
  21.       digitalWrite(6,LOW);
  22.     }
  23.     irrecv_3.resume();
  24.   } else {
  25.   }
  26. }
复制代码

long()

将一个值转换为long长整型数据类型。
语法
long(X)
参数
X:任何类型的值
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册