问题描述
我正在使用GPIO(BCM)17、27、22、5和6的项目中工作。
可以很好地检测到引脚17上的事件,但是GPIO 27确实不愿意触发事件。他们似乎被延迟发现了...
我正在使用带有破坏神Lite的RPI4。
这是显示问题的视频
有一张wiring的照片
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。