每次打开按钮时,Raspberry Pi闪烁的LED指示灯

问题描述 投票:0回答:1

我有一个树莓派连接到拨动开关和LED。每个开关都打开一个LED,第三个开关激活其相应的LED并再次闪烁20秒。目前,python脚本可让您根据需要关闭和打开按钮,但最后一次运行时参数仅在第一次运行。每次打开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) 
python switch-statement gpio led pi
1个回答
0
投票

您要在外部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秒钟的闪烁而无需处理任何额外的时间变量。

© www.soinside.com 2019 - 2024. All rights reserved.