Tinkercad仿真中Arduino红外接收代码无法输出十六进制码求助
问题排查与解决方案
代码有效性确认
你提供的代码符合IRremote v2.x版本的语法规范,逻辑无错误,本地烧录到实体Arduino板配合正常的硬件连接可以正常打印红外按键编码。
故障原因定位
该故障属于Tinkercad仿真平台的兼容问题,共有三类常见触发原因:
- Tinkercad内置的IRremote库做了功能阉割,不支持你使用的
decode_results结构体、irrecv.blink13()等旧版语法,部分版本对模拟引脚A5的中断接收支持存在缺陷 - 仿真场景下红外遥控器和接收模块的位置不对,存在遮挡或者距离过远,信号无法被捕获
- 串口监视器波特率未配置为9600,导致打印内容无法正常显示
修复方案
1. 替换为Tinkercad适配的代码
#include <IRremote.h> // 优先用数字引脚做接收,兼容性更好 const int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; void setup(){ Serial.begin(9600); // 打印启动日志确认串口正常 Serial.println("IR Receiver init"); irrecv.enableIRIn(); } void loop(){ if (irrecv.decode(&results)){ Serial.println(results.value, HEX); irrecv.resume(); } delay(100); }
2. 调整仿真配置
- 将红外接收模块的信号脚连接到代码对应引脚(示例为D2),确认VCC接5V、GND接地
- 拖动红外遥控器到接收模块正前方,间距不超过2cm,仿真中无其他元件遮挡两者路径
- 启动仿真后打开串口监视器,将波特率设置为9600,再按遥控器按键测试
内容的提问来源于stack exchange,提问作者karolxxx
相关产品推荐
相关产品推荐

