RPi.GPIO add_event_detect 有时会被忽略

RPi.GPIO add_event_detect are sometimes ignored

我正在开发一个使用 GPIO(BCM) 17、27、22、5 和 6 的项目。

pin 17上的事件检测的很好,但是GPIO 27实在是不太愿意触发事件。他们似乎有点延迟被检测到...

我正在使用带有 buster 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 ms,这已经很长了。尝试 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)

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

我已经有一个 Pi 有一些奇怪的 IO 行为。它来自早期的 Pi4。请记住,Raspberry Pi 的制造成本确实很低,即使是 PSU 中最轻微的噪音或硅彩票中的运气不佳也会使 Pi 成为不可靠的设备。只是为了确定,更换 PSU(即使它是官方的),如果这不能解决问题,只需向您的供应商申请 RMA。