红外通讯是一种利用红外光编码进行数据传输的无线通讯方式,在目前来讲是使用很是普遍的。生活中常见电视遥控器,空调遥控器,DVD遥控器(如今估计是老古董了),均使用红外线遥控。使用红外线遥控,主要有一体化红外接收头和红外遥控器。git
一体化接收头内部集成了红外接收电路。它能够接收红外信号并还原发射端的波形信号。一般使用的一体化接收头都是38KHz的红外信号。github
实验中采起如下遥控器函数
每一个按键都有各自的编码,按下按键后,就会发送对应编码的红外波。大多使用NEC编码。oop
要想使用红外遥控功能,咱们使用第三方红外遥控库——IRremote(若是是8266请使用 IRremoteESP8266 库)。测试
下面介绍一下IRremote类库
1)IRrecv类 用于接收红外信号并对其解码。在使用前须要实例化一个该类对象。ui
实验内容: 根据遥控器输入的红外信号,显示对应的符号;编码
实验代码:code
/** * @Desc 测试红外通讯 * @author 单片机菜鸟 * @Date 2016/12/29 * */ #include <IRremote.h> #define MAX 22 int RECV_PIN = 7; //定义红外接收模块输出口接arduino数字引脚11 IRrecv irrecv(RECV_PIN); decode_results results; //Car mp3编码 unsigned long rremote_code[MAX] = { 0xFFA25D,0xFF629D,0xFFE21D,//CH- CH CH+ 0xFF22DD,0xFF02FD,0xFFC23D,//PREV NEXT PLAY 0xFFE01F,0xFFA857,0xFF906F,//VOL- VOL+ EQ 0xFF6897,0xFF9867,0xFFB04F,// 0 100+ 200+ 0xFF30CF,0xFF18E7,0xFF7A85,// 1 2 3 0xFF10EF,0xFF38C7,0xFF5AA5,// 4 5 6 0xFF42BD,0xFF4AB5,0xFF52AD, // 7 8 9 0xFFFFFFFF//长按 }; //Car mp3对应的字符串 String rremote_string[MAX] = { "CH-","CH","CH+", "PREV","NEXT","PLAY/PAUSE", "VOL-","VOL+","EQ", "0","100+","200+", "1","2","3", "4","5","6", "7","8","9", "longPress" }; void setup() { Serial.begin(9600); irrecv.enableIRIn(); //初始化红外遥控 } void loop() { if (irrecv.decode(&results)) { //打印字符串 String codeString = getRremoteString(results.value); if(codeString.length()!=0) Serial.println(codeString); irrecv.resume(); // 接收下一个值 } } /** * 解析红外编码并返回对应的字符串 */ String getRremoteString(unsigned long code){ String rremotestring = ""; int i = 0; for(i = 0;i<MAX-1;i++){ if(code == rremote_code){ break; } } //过滤掉长按 if(i==MAX-1) return ""; else return rremote_string; }
实验结果:对象
经过使用这个类库 咱们能够解析到具体的键码,这样咱们就能够基于这个去作一些咱们想作的红外遥控功能(各位能够看看我写的蓝牙七彩灯帖子)。blog