Arduino 红外线控制器

Arduino 红外线控制器

红外线小车
You’ve likely encountered the infrared remote controller, also known as the IR remote controller, while using home electronic devices like TVs and air conditioners… In this tutorial, we are going to learn how to use infrared (IR) remote controller and infrared receiver to control Arduino. In detail, we will learn:
您可能在使用电视和空调等家用电子设备时遇到过红外遥控器,也称为红外遥控器…在本教程中,我们将学习如何使用红外(IR)遥控器和红外接收器来控制Arduino。详细来说,我们将学习:

  • How to connect an IR receiver to Arduino board
    如何将红外接收器连接到Arduino板
  • How to program Arduino to read the command from IR remote controller via IR receiver
    如何对Arduino进行编程,使其通过红外接收器从红外遥控器读取命令

Then you can modify the code to control LED, fan, pump, actuator… via IR remote controller.
然后你可以修改代码来控制LED、风扇、泵、执行器…通过红外遥控器。

请添加图片描述

Hardware Required 所需硬件

1×Arduino UNO or Genuino UNO Arduino UNO 或 Genuino UNO
1×USB 2.0 cable type A/B USB 2.0 电缆 A/B 型
1×IR Kit (Remote Controller and Receiver) 红外套件(遥控器和接收器)
1×CR2025 Battery CR2025 电池
1×Jumper Wires 跳线
1×(Optional) 9V Power Adapter for Arduino (可选)用于Arduino的9V电源适配器
1×(Recommended) Screw Terminal Block Shield for Arduino Uno (推荐)用于Arduino Uno的螺钉接线端子屏蔽层
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno (可选)Arduino Uno透明亚克力外壳

About IR Remote Control 关于红外遥控器

An IR control system includes two components:
红外控制系统包括两个组件:

  • IR remote controller 红外遥控器
  • IR receiver 红外接收器

An IR kit usually includes two above components.
红外套件通常包括上述两个组件。

IR remote controller 红外遥控器

The IR remote controller is a handheld device that emits infrared signals. The IR remote controller consists of a keypad with various buttons:
红外遥控器是一种发射红外信号的手持设备。红外遥控器由一个带有各种按钮的键盘组成:

  • Each button on the remote controller corresponds to a specific function or command.
    遥控器上的每个按钮都对应一个特定的功能或命令。
  • When a button is pressed, the remote emits an infrared signal that carries a unique code or pattern associated with the pressed button.
    按下按钮时,遥控器会发出红外信号,该信号带有与按下按钮相关联的唯一代码或图案。
  • These infrared signals are not visible to the human eye as they are in the infrared spectrum.
    这些红外信号在红外光谱中是人眼不可见的。

请添加图片描述

IR Receiver 红外接收器

The IR receiver module is a sensor that detects and receives the infrared signals emitted by the remote controller.
红外接收器模块是检测和接收遥控器发出的红外信号的传感器。

The infrared receiver detects the incoming infrared signals and converts them into the code (command) representing the button pressed on the remote controller.
红外接收器检测输入的红外信号,并将其转换为代表遥控器上按下的按钮的代码(命令)。

The IR Receiver can be a sensor or a module. You can use the following choices:
红外接收器可以是传感器或模块。您可以使用以下选项:

  • IR Receiver Module only 仅限红外接收器模块
  • IR Receiver Sensor only 仅限红外接收器传感器
  • IR Receiver Sensor + Adapter
    红外接收器传感器 + 适配器

请添加图片描述

请添加图片描述

IR Receiver Pinout 红外接收器引脚排列

IR receiver module or sensor has three pins:
红外接收器模块或传感器有三个引脚:

  • VCC pin: Connect this pin to the 3.3V or 5V pin of the Arduino or external power source.
    VCC引脚:将此引脚连接到Arduino或外部电源的3.3V或5V引脚。
  • GND pin: Connect this pin to GND pin of the Arduino or external power source…
    GND引脚:将此引脚连接到Arduino或外部电源的GND引脚。
  • OUT (Output) pin: This pin is the output pin of the IR receiver module. Connected to a digital input pin on the Arduino.
    OUT(输出)引脚:此引脚是红外接收器模块的输出引脚。连接到Arduino上的数字输入引脚。

How It Works 它是如何工作的

When user presses a button on the IR remote controller
当用户按下红外遥控器上的按钮时

  • The IR remote controller encodes the command corresponding to the button to the infrared signal via a specific protocol
    红外遥控器通过特定协议将对应按钮的命令编码为红外信号
  • The IR remote controller emits the encoded infrared signal
    红外遥控器发出编码后的红外信号
  • The IR receiver receives the encoded infrared signal
    红外接收器接收编码的红外信号
  • The IR receiver decoded the encoded infrared signal in to the command
    红外接收器将编码的红外信号解码到命令中
  • The Arduino reads the command from the IR receiver
    Arduino从红外接收器读取命令
  • The Arduino maps the command to the key pressed
    Arduino将命令映射到按下的键

It seems to be complicated but don’t worry. With the help of DIYables_IRcontroller library, it is a piece of cake.
这似乎很复杂,但不要担心。在图书馆的帮助下,DIYables_IRcontroller这是小菜一碟。

Wiring Diagram 接线图

Wiring diagram between Arduino and IR Receiver Module Arduino和红外接收器模块之间的接线图

请添加图片描述

This image is created using Fritzing. Click to enlarge image
此图像是使用 Fritzing 创建的。点击放大图片

Wiring diagram between Arduino and IR Receiver Sensor Arduino和红外接收器传感器之间的接线图

请添加图片描述

Wiring diagram between Arduino and IR Receiver Sensor and Adapter Arduino和红外接收器传感器和适配器之间的接线图

You can also connect The IR receiver sensor to the adapter before connecting to the Arduino.
您也可以在连接到 Arduino 之前将 IR 接收器传感器连接到适配器。

请添加图片描述

How To Program For IR Remote Controller 如何为红外遥控器编程

  • Include the library: 包括库:
#include <DIYables_IRcontroller.h> // Library for IR Receiver

#include <DIYables_IRcontroller.h> // Library for IR Receiver
#include <DIYables_IRcontroller.h> // 红外接收器库

Declare a DIYables_IRcontroller_17 or DIYables_IRcontroller_21 object corresponds with 17-key or 21-key IR remote controllers:
声明DIYables_IRcontroller_17或DIYables_IRcontroller_21对象对应于 17 键或 21 键红外遥控器:

DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms
// OR
DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms
  • Initialize the IR Controller.
    初始化 IR 控制器。
irController.begin();

In the loop, check if a key is pressed or not. If yes, get the key
在循环中,检查是否按下了某个键。如果是,请获取密钥

Key17 key = irController.getKey(); // if using 17-key IR controller
// OR
Key21 key = irController.getKey(); // if using 21-key IR controller
  • Once you have detected a key press, you can perform specific actions based on each key.
    检测到按键后,您可以根据每个键执行特定操作。

Arduino Code Arduino代码

  • Arduino code for DIYables 17-key IR remote controller
    DIYables 17键红外遥控器的Arduino代码
/** Created by ArduinoGetStarted.com** This example code is in the public domain** Tutorial page: https://arduinogetstarted.com/tutorials/arduino-ir-remote-control*/#include <DIYables_IRcontroller.h> // DIYables_IRcontroller library
#define IR_RECEIVER_PIN 7 // The Arduino pin connected to IR controllerDIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200msvoid setup() {Serial.begin(9600);irController.begin();
}void loop() {Key17 key = irController.getKey();if (key != Key17::NONE) {switch (key) {case Key17::KEY_1:Serial.println("1");// TODO: YOUR CONTROLbreak;case Key17::KEY_2:Serial.println("2");// TODO: YOUR CONTROLbreak;case Key17::KEY_3:Serial.println("3");// TODO: YOUR CONTROLbreak;case Key17::KEY_4:Serial.println("4");// TODO: YOUR CONTROLbreak;case Key17::KEY_5:Serial.println("5");// TODO: YOUR CONTROLbreak;case Key17::KEY_6:Serial.println("6");// TODO: YOUR CONTROLbreak;case Key17::KEY_7:Serial.println("7");// TODO: YOUR CONTROLbreak;case Key17::KEY_8:Serial.println("8");// TODO: YOUR CONTROLbreak;case Key17::KEY_9:Serial.println("9");// TODO: YOUR CONTROLbreak;case Key17::KEY_STAR:Serial.println("*");// TODO: YOUR CONTROLbreak;case Key17::KEY_0:Serial.println("0");// TODO: YOUR CONTROLbreak;case Key17::KEY_SHARP:Serial.println("#");// TODO: YOUR CONTROLbreak;case Key17::KEY_UP:Serial.println("UP");// TODO: YOUR CONTROLbreak;case Key17::KEY_DOWN:Serial.println("DOWN");// TODO: YOUR CONTROLbreak;case Key17::KEY_LEFT:Serial.println("LEFT");// TODO: YOUR CONTROLbreak;case Key17::KEY_RIGHT:Serial.println("RIGHT");// TODO: YOUR CONTROLbreak;case Key17::KEY_OK :Serial.println("OK");// TODO: YOUR CONTROLbreak;default:Serial.println("WARNING: undefined key:");break;}}
}
  • Arduino code for DIYables 21-key IR remote controller
    DIYables 21键红外遥控器的Arduino代码
/** Created by ArduinoGetStarted.com** This example code is in the public domain** Tutorial page: https://arduinogetstarted.com/tutorials/arduino-ir-remote-control*/#include <DIYables_IRcontroller.h> // DIYables_IRcontroller library
#define IR_RECEIVER_PIN 7 // The Arduino pin connected to IR controllerDIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debounce time is 200msvoid setup() {Serial.begin(9600);irController.begin();
}void loop() {Key21 key = irController.getKey();if (key != Key21::NONE) {switch (key) {case Key21::KEY_CH_MINUS:Serial.println("CH-");// TODO: YOUR CONTROLbreak;case Key21::KEY_CH:Serial.println("CH");// TODO: YOUR CONTROLbreak;case Key21::KEY_CH_PLUS:Serial.println("CH+");// TODO: YOUR CONTROLbreak;case Key21::KEY_PREV:Serial.println("<<");// TODO: YOUR CONTROLbreak;case Key21::KEY_NEXT:Serial.println(">>");// TODO: YOUR CONTROLbreak;case Key21::KEY_PLAY_PAUSE:Serial.println(">||");// TODO: YOUR CONTROLbreak;case Key21::KEY_VOL_MINUS:Serial.println("–");// TODO: YOUR CONTROLbreak;case Key21::KEY_VOL_PLUS:Serial.println("+");// TODO: YOUR CONTROLbreak;case Key21::KEY_EQ:Serial.println("EQ");// TODO: YOUR CONTROLbreak;case Key21::KEY_100_PLUS:Serial.println("100+");// TODO: YOUR CONTROLbreak;case Key21::KEY_200_PLUS:Serial.println("200+");// TODO: YOUR CONTROLbreak;case Key21::KEY_0:Serial.println("0");// TODO: YOUR CONTROLbreak;case Key21::KEY_1:Serial.println("1");// TODO: YOUR CONTROLbreak;case Key21::KEY_2:Serial.println("2");// TODO: YOUR CONTROLbreak;case Key21::KEY_3:Serial.println("3");// TODO: YOUR CONTROLbreak;case Key21::KEY_4:Serial.println("4");// TODO: YOUR CONTROLbreak;case Key21::KEY_5:Serial.println("5");// TODO: YOUR CONTROLbreak;case Key21::KEY_6:Serial.println("6");// TODO: YOUR CONTROLbreak;case Key21::KEY_7:Serial.println("7");// TODO: YOUR CONTROLbreak;case Key21::KEY_8:Serial.println("8");// TODO: YOUR CONTROLbreak;case Key21::KEY_9:Serial.println("9");// TODO: YOUR CONTROLbreak;default:Serial.println("WARNING: undefined key:");break;}}
}
Quick Steps 快速步骤
  • Navigate to the Libraries icon on the left bar of the Arduino IDE.
    导航到 Arduino IDE 左侧栏上的 Libraries 图标。
  • Search “DIYables_IRcontroller”, then find the DIYables_IRcontroller library by DIYables
    搜索“DIYables_IRcontroller”,然后通过DIYables找到DIYables_IRcontroller图书馆
  • Click Install button to install DIYables_IRcontroller library.
    单击“安装”按钮安装DIYables_IRcontroller库。

请添加图片描述

  • You will be asked for installing the library dependency as below image:
    系统将要求您安装库依赖项,如下图所示:
    请添加图片描述

  • Click Install all button to install the dependency
    单击“全部安装”按钮安装依赖项

  • Copy the above code and open with Arduino IDE
    复制上面的代码并使用Arduino IDE打开

  • Click Upload button on Arduino IDE to upload code to Arduino
    单击Arduino IDE上的“上传”按钮,将代码上传到Arduino

  • Press keys on the remote controller one by one
    按遥控器上的一个键一个接

  • See the result on Serial Monitor.
    在串行监视器上查看结果。

  • The below is the result when you press keys on 21-key IR controller one by one:
    以下是逐个按下 21 键红外控制器上的键时的结果:

Now you can modify the code to control LED, fan, pump, actuator… via IR remote controllers.
现在您可以修改代码来控制 LED、风扇、泵、执行器…通过红外遥控器。

Video Tutorial 视频教程

We are considering to make the video tutorials. If you think the video tutorials are essential, please subscribe to our YouTube channel to give us motivation for making the videos.
我们正在考虑制作视频教程。如果您认为视频教程是必不可少的,请订阅我们的 YouTube 频道,为我们制作视频提供动力。

The Best Arduino Starter Kit 最好的Arduino入门套件

  • See the best Arduino kit for beginner
    查看最适合初学者的 Arduino 套件

See Also 另见

  • Arduino - Motion Sensor
    Arduino - 运动传感器
  • Arduino - Car Arduino - 汽车
  • Arduino - Flame Sensor
    Arduino - 火焰传感器
  • Arduino Fire Alarm Arduino火灾报警器
  • Arduino - Infrared Obstacle Avoidance Sensor
    Arduino - 红外避障传感器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用JAVA代码实现发送订阅消息以及模板消息

今天写了一个商品到货提醒的job任务&#xff0c;具体效果如下 这里用到了微信的发送订阅消息&#xff0c;主要代码是这一块的&#xff0c;最后我把发送了消息的订单存到表里&#xff0c;因为是定时任务&#xff0c;大家可不存 发送订阅消息 | 微信开放文档 /*** 微信平台-商品…

玩转Linux dd命令:备份与恢复指南

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 玩转Linux dd命令&#xff1a;备份与恢复指南 前言简介基本语法常用选项 示例3. 高级用法 性能优…

python-九九乘法表(对齐式1)

[题目描述] 输出九九乘法表&#xff0c;输出格式见样例。输入格式&#xff1a; 无输出格式&#xff1a; 输出乘法表&#xff0c;对齐方式见样例输出。样例输入 无样例输出 来源/分类&#xff08;难度系数&#xff1a;一星&#xff09; 完整代码展示&#xff1a; #对齐式1 a[] …

夏季生鲜防损规范

一、引言 在夏季&#xff0c;高温与高湿度的环境条件对生鲜商品的品质和保存构成了严峻挑战&#xff0c;生鲜商品由于其天然的易腐特性&#xff0c;在夏季极易发生变质和损耗&#xff0c;那么超市夏季生鲜防损规范主要包含哪几个方面呢&#xff1f; 二、生鲜商品分类及特点 …

Python生成器嵌套太多?使用yield from秒变简洁!

目录 1、yield from基础概念 🌐 1.1 yield关键字回顾 1.2 yield from引入动机 2、yield from深入解析 🧭 2.1 语法与用法 2.2 传递生成器控制权 2.3 与迭代器的高效整合 2.4 与传统yield对比优势 3、实战应用示例 📈 3.1 链接多个生成器 3.2 简化递归生成器实…

Git之checkout/reset --hard/clean -f区别(四十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Elasticsearch:倒数排序融合 - Reciprocal rank fusion - 8.14

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。语法可能会在正式发布之前发生变化。Elastic 将努力修复任何问题&#xff0c;但技术预览中的功能不受官方正式发布功能的支持 SLA 约束。 倒数排序融合 (reciprocal rank fusion - RRF) 是一…

OpenAI: 禁止在不支持的地区使用其 API

OpenAI 给开发者发邮件表示&#xff0c;禁止其 API 用于不被允许的地区&#xff0c;否则 7 月 9 日将面临封杀。 本次封杀似乎不区分 IP &#xff0c;而是直接按照地理位置。

电商数据自动化批量采集:商品数据|订单数据|店铺数据|图片搜索|关键字搜索

电商竞争白热化的今天&#xff0c;一个电商卖家往往会在多个平台铺设店铺来获取更多的客户。有没有什么高效的电商数据采集方式呢&#xff1f; 针对主流电商平台数据采集、ERP、OA等业务系统数据采集、行业数据采集&#xff0c;可以用以下5种电商数据采集方式&#xff1a; API…

【Linux】Ubuntu 部署 Zabbix 7.0

实验环境&#xff1a;Ubuntu-22.04 官方下载地址&#xff1a; 下载Zabbix 7.0 LTS for Ubuntu 22.04 (Jammy), MySQL, Apache 1、下载 Zabbix 官方安装包以及环境配置 下载 zabbix 安装包 wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabb…

Spring-Boot整合Redis【随记】

基于spring boot整合. 1 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2 编写redis的配置文件 application.yml进行编写. 属性: url por…

掌握Three.js:学习路线,成为3D可视化开发的高手!

学习Three.js可以按照以下路线进行&#xff1a; 基础知识&#xff1a; 首先要了解基本的Web开发知识&#xff0c;包括HTML、CSS和JavaScript。如果对这些知识已经比较熟悉&#xff0c;可以直接进入下一步。 Three.js文档&#xff1a; 阅读Three.js官方文档是学习的第一步。官…

(更新)2004-2022年 全国各省环境污染治理投资额数据

环境污染治理投资额是衡量一个国家或地区在环境保护和污染治理方面投入力度的重要经济指标。它体现了政府和企业在改善环境质量、推动绿色发展方面的共同努力&#xff0c;同时也是环境规制政策执行强度的一个反映。 数据简介 环境污染治理投资额涵盖了以下几个方面&#xff1…

APP软件系统的开发流程

APP软件系统的开发是一个复杂的过程&#xff0c;需要多方面的知识和技能。建议选择专业的开发团队进行开发&#xff0c;以确保APP的质量和成功。APP软件系统的开发流程通常包括以下几个阶段。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合…

ONLYOFFICE 桌面编辑器 8.1全新发布,更强大的编辑工具

ONLYOFFICE 8.1 一、什么是ONLYOFFICE&#xff1f;二、怎么安装 ONLYOFFICE 8.1三、主要功能介绍四、总结 一、什么是ONLYOFFICE&#xff1f; ONLYOFFICE 是一款功能强大的办公套件&#xff0c;旨在提供全面的文档、表格和演示文稿编辑解决方案。它集成了文字处理、电子表格和演…

基于Hexo+GITHUB搭建个人博客网站(PS:不用域名,不用服务器,重点是免费,小白也能轻松掌握)

✌ 作者名字&#xff1a;高峰君主 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4ac; 人生格言&#xff1a;没有我不会的语言&#xff0c;没有你过不去的坎儿。&#x1f4ac; &#x1f5…

TMGM外汇:新兴市场的崛起,未来的经济引擎吗?

随着全球经济版图的不断变化&#xff0c;新兴市场逐渐成为国际投资的热点。从亚地区的中国和印度&#xff0c;到拉丁美洲的巴西和墨西哥&#xff0c;再到非洲的尼日利亚和南非&#xff0c;新兴市场的经济活力和潜力引起了全世界的关注。这些市场不仅人口众多&#xff0c;而且在…

win11 修改用户名

step1: 打开设置 step2: 如下图&#xff0c;点击“重命名”修改即可&#xff1b; 看似简单的问题&#xff0c;但若直接搜索查找&#xff0c;很难找到简单的操作&#xff0c;苦笑。。。

超炫酷, 不用学前端也能自己做网页!这个Python库,3分钟内复刻GPT WEB应用

大家好&#xff0c;我是海鸽。 今天&#xff0c;我要和大家分享如何将请求 GPT 的案例&#xff0c;快速“复刻”成 GPT 网页版。这不仅简单&#xff0c;而且对于我们这些后端开发者来说&#xff0c;简直是福音&#xff01; 先睹为快 看看这个界面&#xff0c;是不是感觉很熟…

php,python AES/CBC/PKCS7Padding加密解密 base64/hex编码

1. python版本 import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpadclass AESUtilCBC:def __init__(self, key, iv):self.key key.encode(utf-8)self.iv iv.encode(utf-8)self.pad_length AES.block_sizedef encrypt(self, data):try…