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