我尝试过使用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值。我做错了什么?如何正确地编码去抖动。还有其他可能的方法吗?
发布于 2015-04-18 04:01:04
你的程序永远不会打印"Off“,因为当回调被触发时,你正在测试的变量永远不会被设置为0。
我建议你看一下标准的Raspbian库(内置在RPi.GPIO中),因为它本机处理开关反弹,并且允许你使用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
https://stackoverflow.com/questions/29699375
复制相似问题