Arduino学习笔记⑧ 红外通信

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.前言

红外通信是一种利用红外光编码进行数据传输的无线通信方式,在目前来说是使用非常广泛的。生活中常见电视遥控器,空调遥控器,DVD遥控器(现在估计是老古董了),均使用红外线遥控。使用红外线遥控,主要有一体化红外接收头和红外遥控器。

1.1 一体化红外接收头

一体化接收头内部集成了红外接收电路。它可以接收红外信号并还原发射端的波形信号。通常使用的一体化接收头都是38KHz的红外信号。

1.2 红外遥控器

实验中采取以下遥控器

每个按键都有各自的编码,按下按键后,就会发送对应编码的红外波。大多使用NEC编码。

要想使用红外遥控功能,我们使用第三方红外遥控库——IRremote(如果是8266请使用IRremoteESP8266库)。

2.常用方法

下面介绍一下IRremote类库 1)IRrecv类用于接收红外信号并对其解码。在使用前需要实例化一个该类对象。

IRrecv(recvpin)构造函数 recvpin为连接到接收头的引脚

enableIRIn()初始化红外解码

decode() 检查是否接收到编码

resume() 接收下一个编码

3.实验

实验内容:根据遥控器输入的红外信号,显示对应的符号;

实验代码:

/**

* @Desc 测试红外通信

* @author 单片机菜鸟

* @Date 2016/12/29

*

*/

#include

#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

if(code == rremote_code){

break;

}

}

//过滤掉长按

if(i==MAX-1) return"";

else return rremote_string;

}

实验结果:

4.总结

通过使用这个类库我们可以解析到具体的键码,这样我们就可以基于这个去做一些我们想做的红外遥控功能(各位可以看看我写的蓝牙七彩灯帖子)。

相关文档
最新文档