我有一个树莓派连接到拨动开关和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)
您要在外部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秒钟的闪烁而无需处理任何额外的时间变量。