【发布时间】:2016-05-06 03:32:25
【问题描述】:
我在一个检测 2 个振动传感器的 python 脚本中有这个函数,问题是传感器非常敏感,所以通常当一个被击中时,它们都会被检测到,这给了我一个错误的读数。我将如何阻止它们同时被检测到?我想检测哪个是第一个。这是我尝试过的-
#!/usr/bin/env python
import RPi.GPIO as GPIO
from time import sleep
def setup():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(KnockPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(ShockPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def shock():
print('shock')
def knock():
print('knock')
def register_callbacks():
if GPIO.add_event_detect(ShockPin, GPIO.FALLING, callback=shock, bouncetime=5000):
sleep(5)
elif GPIO.add_event_detect(KnockPin, GPIO.FALLING, callback=knock, bouncetime=5000):
sleep(5)
if __name__ == '__main__':
try:
setup()
register_callbacks()
【问题讨论】:
-
您的 sn-p 看起来不错。你的代码有效吗?如果不是,错误信息或不良行为是什么?
-
你的代码有效,除了两个传感器会同时检测,我只想检测一个或另一个。
-
添加一个变量来保存最后一个事件的时间,如果最后一个事件发生在 5 秒之前,则检查敲击/冲击?
-
@Ashafix 嗯,好主意,我会试一试..似乎合乎逻辑,我是 python 新手,所以我将如何检查每个事件检测的时间?
标签: python function events callback detect