和爷爷一起学Arduino:测试红外遥控器的编码(OOP)

和爷爷一起学Arduino:测试红外遥控器的编码(OOP)

现在红外遥控器非常便宜,在Arduino项目里可以考虑选用红外遥控器。譬如,遥控小车、遥控全彩灯带等。

要应用红外遥控器的,必须先知道它的编码规则,也就是,按下某个键时,Arduino接收到的是个什么样的数值串?

红外接收头是个集成组件,输出是数字值。我们接D11口。Arduino板上电后,拿红外遥控器对准红外接收头,按下任一键,如果组件的红色LED闪烁了,就说明组件是好,并已与Arduino接通。然后在IDE里输入以下测试代码,编译并上传。需用到的红外遥控库IRremote,是在GiHub里下载的。在代码里就可以包含头文件IRremote.h。头文件里声明了一个类IRrecv,按这个类定义一个对象irrecv,它的参数RECV_PIN,就是指定组件连接哪个数字口。

上电运行代码,打开串口监视器。依次按下遥控器上的按键,记下显示在串口监视器里对应的编码。发送编码信息到PC机的语句是Serial.println(results.value, HEX);,其中有一个参数HEX,指定在串口监视器里是以16进制数显示的。

#include 

int RECV_PIN = 11; //define input pin on Arduino

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

我们手头只有三个红外遥控器,分别有16键、17键、21键。下面是我们记录的编码。

16键NEC编码

0

FF9867

*

FF6897

1

FFA25D

#

FFB04F

2

FF629D

FF18E7

3

FFE21D

FF4AB5

4

FF22DD

FF10EF

5

FF02FD

FF5AA5

6

FFC23D



7

FFE01F



8

FFA857



9

FF906F



17键NEC编码

0

FF9867

*

FF6897

1

FFA25D

#

FFB04F

2

FF629D

FF18E7

3

FFE21D

FF4AB5

4

FF22DD

FF10EF

5

FF02FD

FF5AA5

6

FFC23D

OK

FF38C7

7

FFE01F



8

FFA857



9

FF906F



21键NEC编码

静音

FFA25D

停止

FF629D

播放暂停

FFE21D

设置

FF22DD

向上

FF02FD

退出

FFC23D

向左

FFE01F

确认

FFA857

向右

FF906F

模式

FF6897

向下

FF9867

音源

FFB04F

重复

FF30CF

音效

FF18E7

声道

FF7A85

音量+

FF10EF

快退

FF38C7

快进

FF5AA5

音量-

FF42BD

上曲

FF4AB5

下曲

FF52AD

这三个都是NEC制式编码。每个键发6个16进制数。连续两个FF后,接着的4个16进制数就是NEC编码的有效位。如果你按住不放,出来的是一连串FFFFFF。

有这个Demo,加上编码表,你就可以随心所欲开发你的红外遥控了。

展开阅读全文

页面更新:2024-04-16

标签:遥控器   码表   音源   全彩   监视器   制式   静音   串口   手头   音量   小车   组件   爷爷   参数   代码   数字   测试

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top