【发布时间】:2019-03-16 11:24:35
【问题描述】:
我已经组装了一个树莓派,只需按下瞬时开关即可发送一些请求。一切正常,正如预期的那样,直到我意识到打开和关闭附近的插头也会触发程序启动。我对 python 很陌生,但是边走边学。这是我的代码的相关部分
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try
while True:
print("waiting for input")
GPIO.wait_for_edge(10, GPIO.FALLING)
#do requests
except KeyboardInterrupt:
GPIO.cleanup()
GPIO.cleanup()
我在某处读到,可能是我用于按钮的电线充当天线并产生下降沿,但不知道如何确认或修复它。
另外,是否值得进行 time.sleep 延迟,然后在短暂延迟后重新检查边缘是否仍然正确?
按下按钮大约半秒后它应该是假的,而随机触发可能更长时间是真的?不确定所以真的只是在寻找一些建议!
还可能值得指出的是,我使用的是第一代树莓派之一,因为不需要任何繁重的工作!
【问题讨论】:
-
这不是 Python 问题。您需要 add a pull-up or pull-down resistor 到您的电路以避免随机激活您的 GPIO。您可能还需要debounce your button。
-
感谢您的回复,我把它放在 python 中,就像我说我正在学习 python 并想检查我的代码是否正确。我也没有通过指定 pull_up_down = GPIO.PUD_UP 在代码中有效地添加电阻器吗?我认为我不需要去抖动,因为它是一个瞬时开关,当触发请求时,至少需要几秒钟的时间才能执行,并且从测试中,如果按下或按住按钮,我不会得到任何不需要的结果。
标签: python button input raspberry-pi gpio