Arduino 红外遥控
2022-07-05 本文已影响0人
Charles2018
![](https://img.haomeiwen.com/i9926752/861c52e94f806625.png)
从左至右分别为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 遥控器协议值
![](https://img.haomeiwen.com/i9926752/aee9da780fff58ab.png)
以上串口输出的值有0是因为老中医长按按键引起的 如果长按某个键它就一直输出0 如果是短按那就是不同的键代表不通的值。
![](https://img.haomeiwen.com/i9926752/dd68f44552bc3942.jpg)
以上演示图 我用的红外接收头自带了个PCB,PCB上带了个102ohm电阻而实际上跟自己外接电阻没什么屌区别 就是用来防止红外接收头的电流过高烧掉 另外还带了个贴片式led用来响应是否收到红外信号 高电平时亮起低电平熄灭