在这里插入图片描述

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键遥控器串口接收信息截图

在这里插入图片描述

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐