GPIO.wait_for_edge随机触发

问题描述 投票:0回答:1

我已经把一个覆盆子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延迟然后重新检查以查看在短暂延迟后边缘是否仍然是真的?

使用按钮按下它应该是大约半秒后的假,而随机触发可能是真的更长?不确定所以只是寻找一些建议!

也可能值得指出,我正在使用第一代树莓之一,因为不需要任何繁重的工作!

python button input raspberry-pi gpio
1个回答
1
投票

为了防万一其他人偶然发现这个问题,我按下按钮后在程序中实现了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
© www.soinside.com 2019 - 2024. All rights reserved.