RPi.GPIO add_event_detect有时会被忽略

问题描述

我正在使用GPIO(BCM)17、27、22、5和6的项目中工作。

可以很好地检测到引脚17上的事件,但是GPIO 27确实不愿意触发事件。他们似乎被延迟发现了...

我正在使用带有破坏神Lite的RPI4。

这是显示问题的视频

https://youtu.be/bLXQkA1bzKA

有一张wiring的照片

这是我在python3视频中使用的代码

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(27,GPIO.IN,pull_up_down=GPIO.PUD_UP)

def my_callback(channel):
        print("event!")
GPIO.add_event_detect(27,GPIO.FALLING,callback=my_callback,bouncetime=300)

while True:
    pass

是否有更好的方法来检测按钮按下?在RaspBerryPi平台中必须避免使用GPIO吗?还是我做错了什么??

解决方法

您已将反弹时间设置为300毫秒,这很长。尝试30毫秒,那么您的程序将做出更加可靠的反应。

仅当反弹时间(在您的情况下为300毫秒)之后信号发生变化时,才调用该事件。


也请尝试:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(27,GPIO.IN,pull_up_down=GPIO.PUD_UP)

def my_callback(channel):
    print("event!")

GPIO.add_event_detect(27,GPIO.FALLING,callback=my_callback,bouncetime=300)

while True:
    time.sleep(0.01)

一些奇怪的行为是由没有内容的循环的加载引起的。

,

我已经拥有一个带有一些奇怪IO行为的Pi。它来自Pi4的早期批次。请记住,Raspberry Pi的制造确实很便宜,即使PSU中的噪音很小,或者硅彩票中的运气不好,都可能使Pi成为不可靠的设备。只需确定,交换PSU(即使它是官方的),如果仍然不能解决问题,则只需向您的提供商索取RMA。