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。
这是一个显示问题的视频
有照片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。
我正在开发一个使用 GPIO(BCM) 17、27、22、5 和 6 的项目。
pin 17上的事件检测的很好,但是GPIO 27实在是不太愿意触发事件。他们似乎有点延迟被检测到...
我正在使用带有 buster lite 的 RPI4。
这是一个显示问题的视频
有照片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。