标签GPIO之event_detected

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/步进电机定位问题解决尝试