PIGPIO辩护

时间:2015-04-17 12:34:28

标签: python raspberry-pi

我曾尝试使用pigpio库进行去抖但是它没有成功

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值。 我怎么做错了如何正确编码去抖动。 还有什么其他方法

1 个答案:

答案 0 :(得分:0)

您的程序永远不会打印“关闭”,因为您正在测试的变量在触发回调时永远不会设置为0.

我建议你看一下标准的RPi.GPIO库(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