我正在尝试使用python中的tkinter在我的覆盆子pi上创建一个程序,其中按下按钮(GPIO的引脚27)转动并且LED亮起,然后一秒钟关闭LED。我得到的问题是,每次按下按钮,它实际上都会打开和关闭LED两次。
我找到解决这个问题的唯一方法是使去抖时间大于所有LED延迟,这在我的情况下不是一个选项(我想让它完成更复杂和耗时) LED阵列)。
据我了解,去抖时间应该用来解决很快发生多个输入的问题。然而,似乎它在某种程度上工作,所以如果在去抖定时器启动时被调用的函数还没有完成,它再次调用该函数。是什么赋予了?这是我的代码:
import RPi.GPIO as GPIO
from tkinter import *
Screen = Tk()
Screen.geometry ('800x600')
GPIO.setmode (GPIO.BCM)
GPIO.setup (27, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup (15, GPIO.OUT)
def LEDfunction(self):
Screen.after(500)
GPIO.output(15,True)
Screen.after(500)
GPIO.output(15,False)
GPIO.add_event_detect(27,GPIO.RISING,LEDfunction,bouncetime=350)
Screen.mainloop()
值得注意的是time.sleep()给了我完全相同的问题。在上面列出的代码中,需要增加弹跳时间(大约1050),以使该功能仅闪烁一次LED。