Raspberry Pi 每次按钮打开时 LED 闪烁

Raspberry Pi blinking LED every time button is on

我有一个 raspberry pi 连接到拨动开关和 LED。每个开关打开一个 LED,第三个开关激活它对应的 LED 并再次闪烁 20 秒。目前,python 脚本可让您随心所欲地关闭和打开按钮,但 last while 参数仅在第一次运行时运行。每次 GPIO 25 打开时,我如何更改它以使第三个 LED 闪烁?

t_end = time.time() + 20
while(1):

    GPIO.wait_for_edge(23, GPIO.FALLING)
    print ("Phase 1 Initiated")
    sounda.play()

    GPIO.wait_for_edge(24, GPIO.FALLING)
    print ("Phase 2 Initiated")
    soundb.play()

    GPIO.wait_for_edge(25, GPIO.FALLING)
    print ("Phase 3 Initiated")
    soundc.play()
    while time.time() < t_end:
        GPIO.output(6, GPIO.HIGH) 
        sleep(.5)
        GPIO.output(6, GPIO.LOW) 
        sleep(.5) 

您在外部 while 循环之前将 t_end 设置为等于 time.time() + 20,并且在此之后不再更新它,因此一旦 20 秒过去并且 time.time() 变为等于然后大于 t_end,您内部 while time.time() < t_end while 循环中的代码将永远不会再次执行。

因为这段代码中的两个sleep(.5)语句

while time.time() < t_end:
    GPIO.output(6, GPIO.HIGH) 
    sleep(.5)
    GPIO.output(6, GPIO.LOW) 
    sleep(.5)  

意味着每个闪烁周期需要一秒钟,因为 LED 亮半秒,熄灭半秒,为什么不将 while time.time() < t_end: 替换为 for i in range(20): 然后你得到你的 20 秒眨眼,无需处理任何额外的时间变量。