一、介绍

这是一个用ESP8266实现的红外学习遥控器,代码可以直接Arduino刷上哈~
其它的稍后再说
;

二、接线&使用方法

如果懒得改代码想先试试,可以直接把红外发射接在D2上;红外接收接在D5上;
使用方法就是对着红外接收管按一下遥控器按键,之后红外发射管会半秒一次的发射学习的数据;
如果是Arduino IDE,在管理库里下载IRremoteESP8266库即可;

三、代码及解析

为了让各位看懂,我每一句都写了注释来解释,直接上代码!

#include <IRremoteESP8266.h>//8266的IRremote库,如果是arduinoIDE可以在“管理库”里下载(IRremoteESP8266,不是IRremote哈)
#include <IRrecv.h>//接收库,IRremoteESP8266里的,不用下载
#include <IRutils.h>//这个很重要,一定要include一下(resultToTimingInfo就是这个库的)。也是IRremoteESP8266里的,不用下载
#include <IRsend.h>//发射库,还是IRremoteESP8266里的,不用下载//下面是一些设置,大概是一些容错率之类的参数,直接复制即可,在示例->第三方库示例->IRremoteESP8266->IRrecvDumpV2可以看到官方详细的解释,我们直接复制即可
const uint16_t kCaptureBufferSize = 1024;
#if DECODE_AC
const uint8_t kTimeout = 50;
#else   // DECODE_AC
const uint8_t kTimeout = 15;
#endif  // DECODE_AC
const uint16_t kMinUnknownSize = 12;
const uint8_t kTolerancePercentage = kTolerance;
#define LEGACY_TIMING_INFO falseconst uint16_t kRecvPin = 14;//接收管的引脚(这里是D5脚(就是GPIO14,可百度引脚定义,这里填GPIO号))IRrecv irrecv(kRecvPin, kCaptureBufferSize, kTimeout, true);//传进所有的参数,固定写上即可(没有kCaptureBufferSize, kTimeout可以不填,只填kRecvPin也ok)
decode_results results;//固定写上即可,红外接收数据的results变量const uint16_t kIrLed = 4;//发射的引脚(这里是D2脚(就是GPIO4,最好用这个引脚接发射管))
IRsend irsend(kIrLed);//传进发射引脚参数void setup(){Serial.begin(115200);//串口的波特率,不一样的话串口会乱码irsend.begin();//初始化irsend发射的这个库,必须要有irrecv.enableIRIn();     // 初始化irrecv接收的这个库,必须要有while (!Serial)          //等待初始化完成,防止莫名其妙的bug   delay(55);
}uint16_t  rawData_Results[555]; //存放红外发射用的raw码数组,注意必须是uint16_t这个类型(这里研究了好久233),然后长度设置长一点,300左右差不多,我这比较夸张void loop() {if (irrecv.decode(&results)) {          //判断是否接收到了红外的信号/*这里说一下resultToSourceCode这个是IRutils里的,没有用到results的参数,results的参数实在没搞懂,突然发现了这个,研究了一下,他输出的内容大概是这样的(String类型的)#uint16_t rawData[67] = {8782, 4518,  544, 584,  540, 584,  538, 586,  562, 562,  566, 582,  540, 582,  542, 584,  538,...一堆数组(太长了不写了)}#我们用到的就是这个uint16_t数组的长度[int]:和后面的数组(注意中间有空格,需要先去空格)*/String IRrec_value_raw = resultToSourceCode(&results);//把resultToSourceCode到String类型名字是IRrec_value_raw变量(变量名随意哈)//下面是截取[int]的intint IRrec_value_tap_start = IRrec_value_raw.indexOf("rawData[") + 8;//lastIndexOf从前往后寻找String中的对应字符位置,indexOf是String的,说白了就是寻找这些字符返回他们的位置,这里算好了位置了,可以自己Serial.print出resultToSourceCode研究研究哈int IRrec_value_tap_over = IRrec_value_raw.indexOf("]");//寻找String中"]"的位置int IRrec_value_tap = IRrec_value_raw.substring(IRrec_value_tap_start,IRrec_value_tap_over).toInt();//substring也是String的,说白了就是截取两个参数(字的位置)中间的字符到String里,因为正好是数字,所以直接.toInt了,这就是raw码数组的长度//下面是截取数组的字符串,不包含大括号int IRrec_value_raw_start = IRrec_value_raw.indexOf("{") +1 ;//寻找String中{的位置,加一正好是数字开始int IRrec_value_raw_over = IRrec_value_raw.indexOf("}") ;//寻找结尾的位置String IRrec_Raw_Value = IRrec_value_raw.substring(IRrec_value_raw_start,IRrec_value_raw_over);//拼合起来,这里还是有空格的哈irrecv.resume();     //接收下一个值,必须要加//下面开始把String的数据转到uint16_t这个类型里,可能变量名比较长反而看不懂,可以自己替换一下之后再理解int rawList_start = 0;//记录之后for的时候每组数字的时候的开始位置的变量int rawList_over = -1;///记录之后for的时候每组数字的时候的结束位置的变量int rawList_result;//记录每组数据的变量int tap = IRrec_value_tap - 1;//for从0开始,所以-1IRrec_Raw_Value.replace(" ", "");//删掉那个寻找出来String类型的raw数组里面的那些空格,把" "替换成""for(int i=0;i<=tap; i++){rawList_start = rawList_over + 1;//每次加上次的1,现在变量里已经没有空格了,只隔一个逗号就是下一组数据的开始位置,初始是0rawList_over = IRrec_Raw_Value.indexOf(",",rawList_start);//寻找逗号位置,从第二个参数开始(上一次的开始位置开始)rawList_result = IRrec_Raw_Value.substring(rawList_start,rawList_over).toInt();//截取每组数据,int形式暂存里rawData_Results[i] = rawList_result;//添加到这个uint16_t数组里}//下面是测试部分,可以自行修改哈//这里说白了就是按完了就不停的发送学习的数据,如果你的电器有反应就学习成功了//看懂这些代码之后自己改吧,比如接入个blinker什么的,各位自行发挥哈哈哈while(1){irsend.sendRaw(rawData_Results,IRrec_value_tap,38);//这是发送Raw数组,第一个参数就是uint16_t类型的数组,第二个是数组长度,第三个是频率,红外一般就是38kHZ,直接填上38就好delay(500);//每次发送,delay个半秒}
}
}

这个是用的学习Raw码的方式,并不是协议,这样更简单,而且兼容各种协议的红外遥控器;
嗯,就是这样,如果有什么问题可以留言哈;
有什么错误也可以直接指出;
谢谢各位!

by hanbingniao

ESP8266红外学习遥控器相关推荐

  1. ESP8266+红外模块制作万能网路遥控器

    ESP8266+红外模块制作万能网路遥控器 通过红外模块模拟遥控发射指令 接入blinker平台,通过手机可以远程控制. 前提是先读取出你要操控设备遥控的发射码出来.参考<Arduino 红外接 ...

  2. 手里没有USB转TTL模块调试红外学习模块不要紧,利用最小系统板自己焊接一个

    网友邮来一个红外学习模块,玩起来还不错,利用它可以把我家的电视.空调控制起来,今天给大家分享一下这个模块的调试过程,如果手里没有USB转TTL模块的,可以利用咱们的最小系统核心板,自己制作一个USB转 ...

  3. ESP8266学习一ESP8266系统学习

    一.ESP8266简介 #ESP8266是乐鑫公司出的一款串口转Wifi芯片,市面上常见的是安信可公司开发的WiFi串口模块,功能简单来讲就是: 1.通过wifi协议接收到数据,从串口输出: 2.从串 ...

  4. 2021爱智先行者—红外学习模块(空调遥控器)

    [本文正在参与"2021爱智先行者-征文大赛"活动]https://mp.weixin.qq.com/s/I2s99dZpbP0QpMiKFneYJA 前言 之前做了两个传感器20 ...

  5. 立创开源丨红外手电筒遥控器(大功率)

    引言:当屋子很大时(比如教室)我们使用遥控器会发现不太灵,这个时候我们打开百度会发现--没有解决办法???那就只能靠自己了. 描述 选用了能买到的.较便宜的(一元).功率尽可能大的红外灯珠,卖家标称3 ...

  6. ⑦ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 DHT11 温湿度传感器】

    目录 一.准备材料 二.硬件连接 三.软件编程 1.修改工程名 2.添加组件 3.编程 4.反馈结果 5.核心代码 四.总结 ⑦ ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 D ...

  7. ⑥ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 OLED屏幕】

    ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 目录 ⑥ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 OLED屏幕] 适用范围 user_c ...

  8. ② ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)】

    目录 ② ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 ws2812 三原色灯(spi方式 稳定灯光)] 一.驱动ws2812遇到的问题 二.可能的方案 三.具体实现 四.测试程 ...

  9. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

  10. ① ESP8266 开发学习笔记_By_GYC 【更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印】

    ① ESP8266 开发学习笔记_By_GYC [更新 ets_printf 函数 使ESP_IDF 能够支持浮点数打印] 在我们日常的开发过程中,经常使用到的一个功能就是串口打印功能.在ESP826 ...

最新文章

  1. 项目分析_xxoo-master
  2. 操作系统(九)进程控制
  3. python哲学内容 多行胜于单行_Python3基础 __doc__ 单行与多行函数文档
  4. 2017-12-04HTML布局_div布局
  5. SQL 左外连接,右外连接,全连接,内连
  6. 世界不是gameBoy
  7. 谁说.NET不适合搞大数据、机器学习和人工智能
  8. org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx
  9. ictclas4j java_java使用ictclas4j分词时出现NullPointerException错误 寻高手帮忙
  10. 基于html5的旅游交流系统,基于HTML5的旅游移动导览系统的研究与实现
  11. stm32 Keil编译后查看代码/内存占用空间,Flash/RAM占用大小,Code-Data,RO-Data,RW-Data,ZI-Data是什么含义
  12. 米的换算单位和公式_小学数学公式单位换算总结,请为你的孩子收藏好
  13. 前端---二级级联下拉列表的实现
  14. 697.数组的度(力扣leetcode) 博主可答疑该问题
  15. 请自行检查是否安装VC9运行库??
  16. Linux使用“./可执行文件名“运行可执行文件
  17. 如何使用Fastreport .将报表从 Crystal Reports 导入 FastReport .NET
  18. 电子元件-发光二极管
  19. mysql odbc 免安装_MySQL免安装版配置
  20. 学计算机的要起一个群名,如何起一个代表青春的群名字

热门文章

  1. 怎么让人物脚贴地 模型_3DMax人物模型关键帧,如图怎么把那红点的位置弄到脚后跟?...
  2. PBR流程介绍和模型规范
  3. redis之集群运维总结
  4. 天使轮,种子,A轮,B轮,C轮,Pre-IPO
  5. [HNOI2018]毒瘤
  6. java Ofd 转图片_一文教你搞懂如何将ofd格式的文件转为图片
  7. C语言编程猜谜语,简单的一字谜语合集
  8. 如何让技术大佬失去理智
  9. 深入理解Amazon Alexa Skill(三)
  10. 从百亿美元到零估值,硅谷的Theranos或许不止一个