GPIO之event_detected()系列函数
#函数列表
函数 | 参数含义 | 函数含义 |
add_event_detect( channel, status, bouncetime=300) | 传感器引脚,要检测的状态 | 注册一个事件用于检测status是否发现 |
event_detected( channel) | 要检测的引脚 | 检测引脚是否检测到status状态 |
add_event_callback( channel, callback) | 传感器引脚,回调函数 | 发现指定status然后回调执行自定义方法 |
remove_event_detect( channel) | 要检测的引脚 | 停止边缘检测 |
#注:status可选值 GPIO.RISING(电压升高), GPIO.FALLING(电压变低), GPIO.BOTH(电压升高或降低);bouncetime为抖动时间用于软件防抖,单位毫秒。 其中防抖时间可以理解为设置的单位时间内检测一次事件,从而实现单位时间内是否有一次事件触发的效果。
#实验参考:http://www.shumeijiang.com/2020/03/15/gpio之边沿检测/
#实验代码:
#实验效果
- 执行程序可见屏幕输出“开始检测”;
- 因为设置挂起时间为4秒,如果在4秒内手指放在传感器触摸板上,可见回调自定义函数并输出“获取到响应1”;
- 然后伴随挂起4秒结束,屏幕会输出“接下来的动作”;
- 然后输出“检测到事件”
#!/usr/bin/env python
#coding:utf-8
'''
from JiuJiang
树莓酱的操作实例
http:://www.shumeijiang.com
'''
import RPi.GPIO as GPIO ##引入GPIO模块
import time ##引入time库
touchPin = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(touchPin, GPIO.IN)
def getRespose(self):
print "获取到响应1"
GPIO.add_event_detect(touchPin, GPIO.RISING) ##注册一个检测电压由低变高事件
GPIO.add_event_callback(touchPin, getRespose) ##检测到事件触发回调getRespose 函数
print '开始检测'
while True:
if GPIO.event_detected(touchPin):
print "检测到事件"
time.sleep(4) ##进行挂起4秒
print "接下来的动作"
#官方函数定义见如下截图:
#具体应用见文章: 1、https://www.shumeijiang.com/2021/09/02/四路红外避障传感器实验/ 2、https://www.shumeijiang.com/2021/07/25/步进电机定位问题解决尝试