[英]How to disable Raspberry Pi GPIO event for certain time period after it runs in Python?
每当我的 Raspberry Pi 的 GPIO 引脚有下降沿时,我都会创建一个事件。 但是,我想在每次运行后禁用此事件一段时间(例如 5 秒)。 我希望在该时间段之后再次启用该事件。
我的第一个想法就是在实际事件 function 中使用sleep(5)
。 但我相信这不会起作用,因为事件是在单独的线程中运行的。
谁能指出我想要完成的正确方向? 这并不像我想象的那么简单。
import RPi.GPIO as GPIO
import time
from time import sleep
# wait 1 second at startup
sleep(1)
# event function
def event(ev=None):
print("Event was triggered! Should not run again for 5 seconds.")
# sleep(5)
# initialize GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# setup the pin and the event
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(21, GPIO.FALLING, callback=event)
while 1:
continue
当我们使用只有两个触点连接到 GPIO 的简单廉价按钮时,会发生开关弹跳效应。
在新闻和压抑过程中发生了很多不属于数字领域的模拟事情。
有两种方法可以解决这些反弹:
Fortunaly python GPIO 库支持软件实现去抖动。
当您为此类“中断”定义回调时,您可以指定监听器 go 对指定引脚上的任何更改充耳不闻的时间。
是否使用“坏”(嘈杂)按钮并不重要。 您可以使用这个去抖动内置 function 来实现您所需要的:
GPIO.add_event_detect(21, GPIO.FALLING, callback=event, bouncetime=5000 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.