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

树莓派实现绿色LED闪烁速度递增的代码问题求解

问题根源

你的代码中绿灯亮、灭状态的等待时间固定为0.5s,即每1秒完成1次闪烁,5次循环总时长刚好5秒,但全程延时没有变化,因此闪烁速度始终固定。

修改方案

核心逻辑是逐次缩短绿灯亮、灭状态的等待时间,同时保证蓝灯在5秒周期内全程常亮,总运行时长控制在5秒即可。
可直接使用的修改后代码如下:

import time

def blink_green():
    # 蓝灯在周期开始时开启,全程保持常亮
    blue.on()
    TOTAL_TIME = 5          # 单周期总时长5秒
    INIT_DELAY = 0.5        # 初始亮/灭等待时长,对应每秒1次闪烁
    MIN_DELAY = 0.05        # 最快速度下的亮/灭等待时长,对应每秒10次闪烁
    SMOOTH_STEPS = 15       # 速度渐变的阶段数,数值越大提速过渡越平滑
    
    current_delay = INIT_DELAY
    delay_decrement = (INIT_DELAY - MIN_DELAY) / SMOOTH_STEPS
    time_passed = 0

    while time_passed < TOTAL_TIME:
        # 切换绿灯状态
        green.toggle()
        time.sleep(current_delay)
        green.toggle()
        time.sleep(current_delay)
        
        # 累计已运行时长
        time_passed += current_delay * 2
        # 逐轮缩短等待时间,直到达到最快闪烁速度
        if current_delay > MIN_DELAY:
            current_delay -= delay_decrement

while True:
    blink_green()
    # 可选:单周期结束后关闭绿灯,停顿1秒再开启下一轮
    green.off()
    time.sleep(1)

可调说明

  • 如果想要提速效果更明显,可以调小MIN_DELAY的数值,让最快闪烁速度更高;如果想要过渡更自然,增大SMOOTH_STEPS的数值即可。
  • 如果不需要5秒周期结束后的停顿效果,删掉最后两行可选代码即可,程序会自动重启下一个5秒的亮灯周期。

内容的提问来源于stack exchange,提问作者pnlqpp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 07:27:36