项目物料:
- 红外接收模块 或 SCR638、HS0038、VS1838等
- ESP8266开发板
- 红外遥控器
- 支持ESP8266 的 红外库 下载地址_点击直达(科学)
程序代码:
这个程序上传之后 红外遥控器 一个按钮一个按钮 通过串口 获取 十六进制码
#include <Arduino.h>
#include <WiFiManager.h>
#include <IRrecv.h>
#define IR_RECV_PIN 4 //宏定义接收脚
IRrecv irrecv(IR_RECV_PIN); //实例化对象并设置红外接收脚
decode_results results; //实例化对象 获取返回结果
void setup()
{
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
irrecv.enableIRIn(); //启用 红外接收脚
}
void loop()
{
if (irrecv.decode(&results)) //获取返回结果 接收到红外 会返回1
{
if (!results.repeat) // 只有非重复码时执行操作
{
Serial.println(results.value, HEX); //输出十六进制地址
}
irrecv.resume(); //更新以接收下一个 红外码
}
}
获取到十六进制码后 就可以根据 遥控器码 创建代码 例如:
#include <Arduino.h>
#include <WiFiManager.h>
#include <IRrecv.h>
#define IR_RECV_PIN 4
IRrecv irrecv(IR_RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
irrecv.enableIRIn();
}
void loop()
{
if (irrecv.decode(&results))
{
if (!results.repeat) // 只有非重复码时执行操作
{
switch (results.value) {
case 0xFFA25D: // 1
Serial.println("Button 1 pressed");
break;
case 0xFF629D: // 2
Serial.println("Button 2 pressed");
break;
case 0xFFE21D: // 3
Serial.println("Button 3 pressed");
break;
case 0xFF22DD: // 4
Serial.println("Button 4 pressed");
break;
case 0xFF02FD: // 5
Serial.println("Button 5 pressed");
break;
case 0xFFC23D: // 6
Serial.println("Button 6 pressed");
break;
case 0xFFE01F: // 7
Serial.println("Button 7 pressed");
break;
case 0xFFA857: // 8
Serial.println("Button 8 pressed");
break;
case 0xFF906F: // 9
Serial.println("Button 9 pressed");
break;
case 0xFF6897: // *
Serial.println("Button * pressed");
break;
}
}
irrecv.resume();
}
}