GPIO.wait_for_edge随机触发

GPIO.wait_for_edge triggering randomly

我整理了一个 raspberry 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 延迟,然后重新检查边缘在短暂延迟后是否仍然为真?

按下按钮大约半秒后应该为假,而随机触发可能会持续更长的时间为真?不确定,所以真的只是在寻找一些建议!

另外可能值得指出的是,我使用的是第一代 raspberry pi 中的一个,因为不需要任何繁重的工作!

以防万一其他人偶然发现这个问题,我最终在按下按钮后在我的程序中实现了 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