如何用time.monotonic()控制I2C连接的LED矩阵周期性闪烁
解决I2C连接LED矩阵的闪烁问题
你可以直接复用原代码的time.monotonic()时间判断逻辑,只需要替换掉操作GPIO引脚的代码,改用你已有的led.on()和led.off()函数,同时新增变量追踪当前LED状态即可。
修改后的代码如下:
import time # 亮灯时长(秒) BLINK_ON_DURATION = 0.5 # 熄灯时长(秒) BLINK_OFF_DURATION = 0.5 # 上次切换状态的时间 LAST_BLINK_TIME = -1 # 当前LED状态,True表示亮,False表示灭 led_state = False # 此处假设你已完成I2C接口及led对象的初始化,例如: # led = YourI2CLEDMatrix() while True: # 获取当前单调时间 now = time.monotonic() if not led_state: # 判断是否到点亮时间 if now >= LAST_BLINK_TIME + BLINK_OFF_DURATION: led.on() led_state = True LAST_BLINK_TIME = now else: # 判断是否到熄灭时间 if now >= LAST_BLINK_TIME + BLINK_ON_DURATION: led.off() led_state = False LAST_BLINK_TIME = now
关键修改说明:
- 移除了原代码中
digitalio、board相关的GPIO初始化代码,因为你的LED由I2C驱动,无需操作GPIO引脚 - 新增
led_state变量记录LED当前亮灭状态,替代原代码中led.value的作用 - 将设置
led.value的逻辑替换为调用led.on()和led.off()函数 - 保留原有的
time.monotonic()时间判断逻辑,确保半秒切换间隔的准确性
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

