Arduino学习笔记12:接收电视机遥控器按键

材料:

  • 红外线接收头

  • 上拉电阻1个

  • 杜邦线

接线方法:

我正在用的这个红外线接收头(不知道具体型号,从报废电器上拆下来的),当面向金属十字交叉的这一面,它的三个引脚从左到右依次是:OUT、GND、VCC。注意:并不是所有红外线接收头的引脚定义都是一样的,以对应的资料为准。

OUT:D11

GND:Arduino上的GND

VCC:Arduino上的5V

接好之后的实物图:

1.jpg

有资料说,有的红外线接收头需要加一个10K的上拉电阻(用10K电阻将OUT和VCC连起来)。我没找到10K的,就用20K的测试了一下,加不加这个上拉电阻都可以读出命令。我又买了一枚新的VS1838B测试了一下,它的外观和之前旧的一模一样,只是成色新,背后印着型号:VS1838B,引脚的定义也一模一样。它的资料里明确说需要一个20K的上拉电阻,但实际上也不需要加上拉电阻就可以读出按键命令。

2.gif

源码:

#include int IR_RECEIVE_PIN = 11;

void setup() {
    Serial.begin(9600);
    IrReceiver.begin(IR_RECEIVE_PIN);
}

void loop() {
    if (IrReceiver.decode()) {
        Serial.println(IrReceiver.decodedIRData.command);
        IrReceiver.resume();
    }
}

这段代码的作用是接收遥控器的操作命令,并打印出来。拿一个电视机遥控器随便按几个键,通过串口监视器看到的结果是:

1.gif

注意:不仅仅是电视机的遥控器可以读取,大多数遥控器都能通过Arduino读取。但也有少数例外,我测试中就遇到Haier海尔的空调机遥控器就无法读取,只能知道它发射了信号,但信号是什么却不知道。我猜测,它使用了一个私有协议。要想读取它的信号,就先要得到它的技术文档,然后根据协议规定的时序从更底层分析信号源。

扫码关注我的公众号