我有一个连接到拨动开关和 LED 的树莓派。每个开关打开一个 LED,第三个开关激活它对应的 LED,并再次闪烁 20 秒。目前,python 脚本将允许您根据需要关闭和打开按钮,但最后一个 while 参数仅在第一次运行。每次打开 GPIO 25 时,如何更改它以使第三个 LED 闪烁?t_end = time.time() + 20while(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 回答

牧羊人nacy
TA贡献1862条经验 获得超7个赞
您在外部 while 循环之前设置t_end为等于time.time() + 20,并且在此之后不再更新它,因此一旦 20 秒过去并time.time()变为等于然后大于t_end,您的内部while time.time() < t_endwhile 循环中的代码将永远不会再次执行。
因为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 秒的闪烁而无需处理任何额外的时间变量。
添加回答
举报
0/150
提交
取消