本文发布于 1045 天前。
遥控器的红外码(HEX)
按键 | 红外码 | 按键 | 红外码 | 按键 | 红外码 |
---|---|---|---|---|---|
CH- | FFA25D | CH | FF629D | CH+ | FFE21D |
PREV | FF22DD | NEXT | FF02FD | PLAY | FFC23D |
- | FFE01F | + | FFA857 | EQ | FF906F |
0 | FF6897 | 100+ | FF9867 | 200+ | FFB04F |
1 | FF30CF | 2 | FF18E7 | 3 | FF7A85 |
4 | FF10EF | 5 | FF38C7 | 6 | FF5AA5 |
7 | FF42BD | 8 | FF4AB5 | 9 | FF52AD |
接受红外信号
#include <IRremote.h> //调用IRremote.h库
int RECV_PIN = 13; //定义RECV_PIN变量
int led2PIN = 2;
int led3PIN = 3;
int led4PIN = 4;
long codes[3] = //该数组用来存放红外遥控器发出的红外码
{
0xFF18E7, // 数字2对应的红外码
0xFF7A85, // 3
0xFF10EF, // 4
};
IRrecv irrecv(RECV_PIN); //设置RECV_PIN(即13引脚)为红外接收端
decode_results results; //定义results变量为红外结果存放位置
void setup()
{
pinMode(led2PIN, OUTPUT);
pinMode(led3PIN, OUTPUT);
pinMode(led4PIN, OUTPUT);
Serial.begin(9600); //设置波特率为9600
irrecv.enableIRIn(); //启动红外解码
}
void loop()
{
if (irrecv.decode(&results)) // 一开始还是先判断是否接收到红外码,并把接收到的数据存储在变量results中。
{
Serial.println(results.value, HEX); //输出结果的value值,转为十六进制
for (int i = 0; i < 3; i++)
{
if (results.value == codes[i])
{
digitalWrite(i + 2, HIGH);
delay(200);
digitalWrite(i + 2, LOW);
}
else if (results.value == 0xFF30CF) //数字1的红外码
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
delay(200);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
}
}
irrecv.resume(); // 接受下一个编码
}
}