Arduino平台Python代码打印异常:仅输出'led on'求助排查
问题排查与修复
你的代码存在两个核心问题,导致无法按预期输出状态信息:
状态读取时机错误
你在每次循环的最后才读取LED引脚状态,此时LED已经完成了"亮1秒→灭1秒"的完整周期。而你反馈只看到"led on",大概率是因为CustomTelemetrix库对输出模式下的引脚执行digital_read时,返回的是最后一次写入的缓存值而非实际引脚电平,或者存在延迟偏差。冗余的状态判断
既然你是主动通过digital_write设置LED状态,完全不需要再通过digital_read去判断——直接在设置状态后打印对应信息即可,既可靠又高效。
修复后的代码
from fhict_cb_01.custom_telemetrix import CustomTelemetrix import time board = CustomTelemetrix() board.set_pin_mode_digital_output(5) def control_led(): while True: # 点亮LED并打印状态 board.digital_write(5, 1) print("led on") time.sleep(1) # 熄灭LED并打印状态 board.digital_write(5, 0) print("led off") time.sleep(1) control_led()
额外说明
- 若坚持要通过读取引脚状态判断,需注意:部分Arduino库在输出模式下读取引脚时,返回的是硬件寄存器的缓存值而非实际采样电平。此时若改为输入模式读取,会破坏LED的输出控制逻辑,完全没必要。
- 原函数名
print_numbers和功能不符,修复后改为语义化的control_led,提升代码可读性。
内容的提问来源于stack exchange,提问作者Nicolás Casuso
相关产品推荐
相关产品推荐

