皮皮奥·德邦

2024-06-26 08:25:15 发布

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

我尝试过使用pigpio库进行debounce,但没有成功

import pigpio
captureFlag=1
pi=pigpio.pi()
def ImgCap(gpio.level.ticks):
    global captureFlag
    if captureFlag==0:
        print "OFF"
    if captureFlag==1:
        captureflag=0
        print "call back"
        for x in xrange (1000000):
              x=x+1
        print x
        captureflag=1
def main():
      calf=pi.callback(4,pigpio.RISING_EDGE,ImgCap)
      while True:
           pass
if __name__=='__main__'
      main()

这是不成功的回调从不打印,它继续打印回拨和x值。 我做错了什么?如何正确地编写代码。 还有其他可能的方法吗


Tags: importgpioifmaindefpilevelglobal
1条回答
网友
1楼 · 发布于 2024-06-26 08:25:15

您的程序从不打印“Off”,因为在触发回调时,您要测试的变量从未设置为0。在

我建议你看看标准零售物价指数库(Raspbian内置的函数),因为它本机处理开关反弹,还允许您使用GPIO.BOTH在一个函数中为上升和下降沿设置回调。在

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN)

def ImgCap(channel):
    print("Flag Captured?")

GPIO.add_event_detect(4, GPIO.BOTH, callback=ImgCap, bouncetime=200)

while True:
    pass

http://raspi.tv/2014/rpi-gpio-update-and-detecting-both-rising-and-falling-edges

相关问题 更多 >