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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:10:53