红外接收器
概述
红外接收器是一种接收红外信号的元件,可以独立接收红外线并输出与 TTL 电平兼容的信号。其大小与普通塑料封装晶体管相似,适用于各种红外遥控和红外传输。
所需元件
本项目中,我们需要以下元件。
购买整套套件会更加方便,以下是链接:
名称 |
套件所含项目 |
链接 |
|---|---|---|
Elite Explorer 套件 |
300+ |
您也可以从以下链接单独购买。
元件介绍 |
购买链接 |
|---|---|
- |
|
接线
原理图
代码
备注
您可以直接打开路径
elite-explorer-kit-main\basic_project\22-ir_receiver下的22-ir_receiver.ino文件。或者将以下代码复制到 Arduino IDE 中。
这里使用
IRremote库,您可以从 库管理器 安装它。
备注
遥控器背面有一个透明塑料片用于切断电源,使用遥控器前请将其拔出。
代码分析
此代码设计用于与红外(IR)遥控器配合使用,采用 IRremote 库。以下是分析:
包含库并定义常量。首先包含 IRremote 库,并将红外接收器的引脚号定义为 2。
#include <IRremote.h> const int IR_RECEIVE_PIN = 2;
以 9600 波特率初始化串口通信。在指定引脚(
IR_RECEIVE_PIN)上初始化红外接收器,并启用 LED 反馈(如果适用)。void setup() { Serial.begin(9600); // 开始串口通信,波特率为 9600 IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // 启动红外接收器 }
循环持续运行以处理传入的红外遥控信号。
void loop() { // 检查是否有任何传入的红外信号 if (IrReceiver.decode()) { // IrReceiver.printIRResultShort(&Serial); // 打印接收到的数据(单行) // Serial.println(IrReceiver.decodedIRData.command, HEX); // 以十六进制格式打印命令 Serial.println(decodeKeyValue(IrReceiver.decodedIRData.command)); // 映射并打印解码后的红外信号对应的键值 IrReceiver.resume(); // 启用接收下一个值 } }
检查是否接收并成功解码了红外信号。
使用自定义
decodeKeyValue()函数解码红外命令并存储在decodedValue中。将解码后的红外值打印到串口监视器。
恢复红外信号接收以准备接收下一个信号。
将接收到的红外信号映射到相应按键的辅助函数
// 将接收到的红外信号映射到相应按键的函数 String decodeKeyValue(long result) { // 每个 case 对应一个特定的红外命令 switch (result) { case 0x16: return "0"; case 0xC: return "1"; case 0x18: return "2"; case 0x5E: return "3"; case 0x8: return "4"; case 0x1C: return "5"; case 0x5A: return "6"; case 0x42: return "7"; case 0x52: return "8"; case 0x4A: return "9"; case 0x9: return "+"; case 0x15: return "-"; case 0x7: return "EQ"; case 0xD: return "U/SD"; case 0x19: return "CYCLE"; case 0x44: return "PLAY/PAUSE"; case 0x43: return "FORWARD"; case 0x40: return "BACKWARD"; case 0x45: return "POWER"; case 0x47: return "MUTE"; case 0x46: return "MODE"; case 0x0: return "ERROR"; default: return "ERROR"; } }