我已经把一个覆盆子pi放在一起,在瞬间开关的按下发送一些请求。一切正常,正如我所料,直到我意识到附近打开和关闭插头也触发了程序开火。我是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延迟然后重新检查以查看在短暂延迟后边缘是否仍然是真的?
使用按钮按下它应该是大约半秒后的假,而随机触发可能是真的更长?不确定所以只是寻找一些建议!
也可能值得指出,我正在使用第一代树莓之一,因为不需要任何繁重的工作!
为了防万一其他人偶然发现这个问题,我按下按钮后在程序中实现了0.3秒的等待时间,然后检查它是否仍然是下降沿(低)。
如果它是继续我想要的代码,因为它是一个按钮按下,如果没有,那么不做任何干扰。
是否意味着我必须按住我的瞬间开关大约一秒钟,以确保它通过我的检查,但没有大问题!
while True:
print("waiting for input")
GPIO.wait_for_edge(10, GPIO.FALLING)
time.sleep(.3)
if GPIO.input(10) == GPIO.LOW:
#do the thing i want as it's a button press
else:
#do nothing as its interference