Python GPIO.wait_等待_边缘随机触发

Python GPIO.wait_等待_边缘随机触发,python,button,input,raspberry-pi,gpio,Python,Button,Input,Raspberry Pi,Gpio,我已经把一个树莓圆周率发送几个请求在按下一个瞬间开关。一切正常,正如预期的那样,直到我意识到打开和关闭附近的插头也会触发程序启动。我对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")

我已经把一个树莓圆周率发送几个请求在按下一个瞬间开关。一切正常,正如预期的那样,直到我意识到打开和关闭附近的插头也会触发程序启动。我对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()
我在某个地方读到过,可能是我用在按钮上的电线起到了天线的作用,产生了下降沿,但不知道如何确认或修复它

还有,是否值得花点时间。睡眠延迟,然后重新检查,看看短暂延迟后边缘是否仍然正确

按一个按钮,大约半秒钟后它应该是假的,而随机触发器可能会在更长的时间内它是真的?不确定,所以只是寻求一些建议真的


也可能值得指出的是,我使用的是第一代树莓pis,因为它不需要任何重物

为了防止其他人偶然发现这一点,我在按下按钮后在程序中执行了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

这不是Python的问题。您需要重新连接电路,以避免随机激活GPIO。您可能也需要这样做。感谢您的回复,我将它放在python中,就像我说的我正在学习python,并希望检查我的代码是否正确一样。另外,通过指定pull\u up\u down=GPIO.PUD\u up,我是否没有有效地在代码中添加电阻器?我不认为我需要去抖动,因为这是一个瞬时开关,当触发请求时,执行至少需要几秒钟,从测试中,如果按下或按住按钮,我不会得到任何不想要的结果。