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

时间:2019-09-27 19:09:34

标签: python switch-statement gpio led pi

我有一个树莓派连接到拨动开关和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) 

1 个答案:

答案 0 :(得分: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闪烁的秒数,无需处理任何额外的时间变量。