Raspberry pi Raspberry Pi/GPIO.RISING在上触发回调。两个

Raspberry pi Raspberry Pi/GPIO.RISING在上触发回调。两个,raspberry-pi,raspbian,gpio,Raspberry Pi,Raspbian,Gpio,我有一个树莓皮通过NOOBS运行树莓皮。我有一个连接到引脚1和引脚11的按钮。我正在尝试使用GPIO.add\u event\u detect和RPIO.RISING在按下按钮时调用函数。(回调将点亮led 2秒钟,然后将其关闭。) 我发现RPIO.RISING函数在按钮按下(引脚11从0变为1)和按钮释放(引脚11从1变为0)时调用回调。这盏灯被打开了两次,就像我使用RPIO时一样 我不认为这是一个滞后/噪声信号问题,因为我可以按下按钮几秒钟,然后放开,看到回调再次调用 下面是示例代码: im

我有一个树莓皮通过NOOBS运行树莓皮。我有一个连接到引脚1和引脚11的按钮。我正在尝试使用GPIO.add\u event\u detect和RPIO.RISING在按下按钮时调用函数。(回调将点亮led 2秒钟,然后将其关闭。)

我发现RPIO.RISING函数在按钮按下(引脚11从0变为1)和按钮释放(引脚11从1变为0)时调用回调。这盏灯被打开了两次,就像我使用RPIO时一样

我不认为这是一个滞后/噪声信号问题,因为我可以按下按钮几秒钟,然后放开,看到回调再次调用

下面是示例代码:

import RPi.GPIO as GPIO ## Import GPIO library
import time

#configure all of the inputs / outputs properly
def config():

 #initalize the GPIO pin numbering
 GPIO.setmode(GPIO.BOARD) ## Use board pin numbering

 #setup output pins
 GPIO.setup(8, GPIO.OUT) ## Setup GPIO Pin 7 to OUT
 GPIO.setup(10,GPIO.OUT)
 GPIO.setup(12,GPIO.OUT)

 #initialize the inputs for the button
 GPIO.setup(11, GPIO.IN)

 #create the button-watching function
 GPIO.add_event_detect(11, GPIO.RISING, callback=execute_lights, bouncetime=800)

#the light-turning-on function. One press turns yellow. Second press turns green, then off.
def execute_lights(channel):
 print "executing lights: "

 #Turn on the light we want
 GPIO.output(8,True)
 #turn green off after 2 seconds
 time.sleep(2)
 GPIO.output(8,False)

是否有一个软件解决方案可以用来解决这个问题?

无论出于何种原因,bounctime的实现都非常奇怪。 如果您在设置的800毫秒反弹时间内按住并松开按钮,它应该可以正常工作。如果你按住它更长的时间,那么你会在释放时触发,有时。我也有同样的问题,认为“反弹时间”是“系统”忽略所有其他输入的时间…比如开关的“稳定”时间。不是。所以只要你在你设定的弹跳时间内按下并释放你的按钮,你就会发现它工作正常


尼克

无论出于什么原因,bounctime的实现都非常奇怪。 如果您在设置的800毫秒反弹时间内按住并松开按钮,它应该可以正常工作。如果你按住它更长的时间,那么你会在释放时触发,有时。我也有同样的问题,认为“反弹时间”是“系统”忽略所有其他输入的时间…比如开关的“稳定”时间。不是。所以只要你在你设定的弹跳时间内按下并释放你的按钮,你就会发现它工作正常

尼克