0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino篇—红外遥控

冬至子 来源:X的创客课堂 作者:MRXY 2023-11-01 14:19 次阅读

相关知识

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用。

组成:红外遥控器 + 红外接收器

基本原理:红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射的红外光转换为相应的电信号,再送后置放大器

图片

发射部分:通过功率放大调制后的编码信号,再经由发射电路向外发射调制后的指令编码。

接收部分:接收到已调制的编码信号并进行放大解调,还原出对应的编码信号。

图片

电路搭建

所需材料

ArduinoUNO * 1
红外接收模块 * 1
红外遥控器 * 1
红黄蓝绿LED各一
直流电机 * 1
杜邦线若干

接线方式

接收器引脚定义:
"-"接UNO的"GND"
"S"接UNO的信号端口
中间的引脚接UNO的5V

图片

程序编写

练习一:读取红外遥控器的键值

编程实现通过串口读取红外遥控器各个键位对应的键值。

图形化方式:

图片

打开串口监视器,按下红外遥控器上的按键,可以在监视器上读取到对应的键值。正确的键值模式为“FF”开头的6位十六进制数字。

图片

键值对应列表:

1.jpg

  • 代码方式:
    /* 项目名称:红外键值读取
     * 项目时间: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。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    41

    文章

    3364

    浏览量

    131571
  • 接收器
    +关注

    关注

    14

    文章

    2215

    浏览量

    70673
  • 发光二极管
    +关注

    关注

    13

    文章

    1138

    浏览量

    65692
  • 红外遥控器
    +关注

    关注

    3

    文章

    132

    浏览量

    21454
  • 硅光电池
    +关注

    关注

    0

    文章

    15

    浏览量

    4945
收藏 人收藏

    评论

    相关推荐

    arduino单片机的红外遥控解码发送库文件

    红外遥控库除了解码之外还能发送,用C++封装的库函数,是arduino编程的利器
    发表于 08-29 18:59

    红外遥控设计的两文档

    红外遥控器的,也想请大家关注一下。这两文档是我设计前期先阅读的文档,一仔细看了,一备用的,分享给大家。
    发表于 01-10 15:07

    【Landzo C1试用体验】五:红外遥控控制运动

    本帖最后由 数码小叶 于 2016-7-1 12:20 编辑 这次的Arduino套件虽然没有配备蓝牙模块,不过还是包含了红外遥控和315M遥控两个。这一
    发表于 07-01 12:08

    Arduino开发实战指南 AVR

    模块的应用第三应用第8章打造自己的遥控履带车第9章仿生机器人附录A  Arduino引脚与AVR单片机管脚对应关系附录B  Arduino
    发表于 08-03 16:14

    【DFR0100 Arduino入门套件】 Lesson15--红外接收

    该教程实验平台:Arduino入门套件上一教程:Arduino教程 Lesson 14--自制风扇这节我们会接触一个新的元件——红外接收管。所谓
    发表于 09-15 10:51

    基于stm32实现红外自发自收红外遥控

    基于stm32实现红外自发自收红外遥控简介红外发射stm32模拟红外发射思路及效果红外接收stm
    发表于 12-08 06:16

    dfrobot数字红外接收模块简介

    红外遥控是我们生活中最常见的遥控方式。你每天使用的电视遥控器和空调遥控器都是使用这个原理。运用Ardui
    的头像 发表于 12-13 15:39 1437次阅读
    dfrobot数字<b class='flag-5'>红外</b>接收模块简介

    Arduino的实验例程之红外遥控实验

    本文档的主要内容详细介绍的是Arduino的实验例程之红外遥控实验。
    发表于 02-25 16:36 49次下载
    <b class='flag-5'>Arduino</b>的实验例程之<b class='flag-5'>红外</b><b class='flag-5'>遥控</b>实验

    使用Arduino解码任何遥控器的红外遥控信号

    电子发烧友网站提供《使用Arduino解码任何遥控器的红外遥控信号.zip》资料免费下载
    发表于 10-27 11:51 4次下载
    使用<b class='flag-5'>Arduino</b>解码任何<b class='flag-5'>遥控</b>器的<b class='flag-5'>红外</b><b class='flag-5'>遥控</b>信号

    Arduino项目轻松添加红外遥控器和红外接收器

    电子发烧友网站提供《Arduino项目轻松添加红外遥控器和红外接收器.zip》资料免费下载
    发表于 11-03 11:26 0次下载
    <b class='flag-5'>Arduino</b>项目轻松添加<b class='flag-5'>红外</b><b class='flag-5'>遥控</b>器和<b class='flag-5'>红外</b>接收器

    使用Arduino Nano R3进行红外遥控的数字时钟

    电子发烧友网站提供《使用Arduino Nano R3进行红外遥控的数字时钟.zip》资料免费下载
    发表于 11-03 11:30 1次下载
    使用<b class='flag-5'>Arduino</b> Nano R3进行<b class='flag-5'>红外</b><b class='flag-5'>遥控</b>的数字时钟

    Arduino UNO的红外接收器和遥控

    电子发烧友网站提供《带Arduino UNO的红外接收器和遥控器.zip》资料免费下载
    发表于 11-11 14:18 0次下载
    带<b class='flag-5'>Arduino</b> UNO的<b class='flag-5'>红外</b>接收器和<b class='flag-5'>遥控</b>器

    红外遥控发串口资料下载

    红外遥控发串口 arduino
    发表于 12-06 16:36 1次下载

    结合STM32、Arduino理解红外遥控编解码通信原理

    红外遥控我们并不陌生,身边随处可见,最常见的就是家电中的红外遥控,那你知道其中的收发原理吗?
    的头像 发表于 03-14 09:46 1222次阅读

    Arduino红外遥控

    电子发烧友网站提供《带Arduino红外遥控器.zip》资料免费下载
    发表于 07-06 10:51 0次下载
    带<b class='flag-5'>Arduino</b>的<b class='flag-5'>红外</b><b class='flag-5'>遥控</b>器