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

2024-06-25 23:01:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个覆盆子pi连接到切换开关和LED。每个开关打开一个LED,第三个开关激活相应的LED,并再次闪烁20秒。目前,python脚本允许您根据需要关闭和打开按钮,但last-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) 

Tags: foroutputplayledgpiotimesleepend
1条回答
网友
1楼 · 发布于 2024-06-25 23:01:03

在外部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亮半秒钟,关半秒钟,为什么不直接用for i in range(20):替换while time.time() < t_end:,然后你就可以得到20秒的闪烁时间,而不需要处理任何额外的时间变量。你知道吗

相关问题 更多 >