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

我有一个连接到拨动开关和 LED 的树莓派。每个开关打开一个 LED,第三个开关激活它对应的 LED,并再次闪烁 20 秒。目前,python 脚本将允许您根据需要关闭和打开按钮,但最后一个 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) 


红糖糍粑
浏览 93回答 1
1回答

牧羊人nacy

您在外部 while 循环之前设置t_end为等于time.time() + 20,并且在此之后不再更新它,因此一旦 20 秒过去并time.time()变为等于然后大于t_end,您的内部while time.time() < t_endwhile 循环中的代码将永远不会再次执行。因为sleep(.5)这段代码中的两条语句while time.time() < t_end:&nbsp; &nbsp; GPIO.output(6, GPIO.HIGH)&nbsp;&nbsp; &nbsp; sleep(.5)&nbsp; &nbsp; GPIO.output(6, GPIO.LOW)&nbsp;&nbsp; &nbsp; sleep(.5)&nbsp;&nbsp;意味着每个闪烁周期需要一秒钟,因为 LED 亮半秒然后熄灭半秒,为什么不替换while time.time() < t_end:为for i in range(20):然后你得到 20 秒的闪烁而无需处理任何额外的时间变量。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python