嵌入式

Arduino 红外遥控

2022-07-05  本文已影响0人  老中医167788
红外接收头

从左至右分别为OUT、GND、VCC

实验一

读取遥控器按键值通过串口发送值电脑。

接线

Nano 功能 接收头
D9 数字接口(模拟正极) VCC
D10 数字接口(模拟负极) GND
D11 数字接口 OUT

代码

#include<IRremote.h>

int PIN_RECV = 11;          // 红外数据接口。
IRrecv irrecv(PIN_RECV);
decode_results results;     // 储存解码结果
int IRVCC = 9;
int IRGND = 10;

void setup()
{
    Serial.begin(9600);
    irrecv.enableIRIn();            // 初始化红外解码
    pinMode(IRVCC, OUTPUT);
    pinMode(IRGND, OUTPUT);

    digitalWrite(IRVCC, HIGH);
    digitalWrite(IRGND, LOW);
}

void loop()
{
    if (irrecv.decode())
    {
        auto val = irrecv.decodedIRData.decodedRawData;
        Serial.println(val, HEX);
        irrecv.resume();           // 接受下一个编码
    }
    delay(500);
}

重点说明

irrecv.decode() 接收到红外线信号,返回1反之0
irrecv.decodedIRData.decodedRawData; 当前按键编码值
irrecv.decodedIRData.protocol 遥控器协议值
串口输出的值

以上串口输出的值有0是因为老中医长按按键引起的 如果长按某个键它就一直输出0 如果是短按那就是不同的键代表不通的值。

演示.jpg

以上演示图 我用的红外接收头自带了个PCB,PCB上带了个102ohm电阻而实际上跟自己外接电阻没什么屌区别 就是用来防止红外接收头的电流过高烧掉 另外还带了个贴片式led用来响应是否收到红外信号 高电平时亮起低电平熄灭

上一篇下一篇

猜你喜欢

热点阅读