You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino平台Python代码打印异常:仅输出'led on'求助排查

问题排查与修复

你的代码存在两个核心问题,导致无法按预期输出状态信息:

  1. 状态读取时机错误
    你在每次循环的最后才读取LED引脚状态,此时LED已经完成了"亮1秒→灭1秒"的完整周期。而你反馈只看到"led on",大概率是因为CustomTelemetrix库对输出模式下的引脚执行digital_read时,返回的是最后一次写入的缓存值而非实际引脚电平,或者存在延迟偏差。

  2. 冗余的状态判断
    既然你是主动通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:07:33