GPIO输入两次树莓派运行函数 - 使用Python tkinter

时间:2016-11-27 04:34:57

标签: python tkinter raspberry-pi gpio

我正在尝试使用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。

0 个答案:

没有答案