找回密码
 立即注册

QQ登录

【GPIO】Raspberry Pi 中断使用

来源: 奥松-Neil 2017-2-8 17:14 显示全部楼层 |阅读模式
本帖最后由 奥松-Neil 于 2018-11-21 13:56 编辑

1、实验目的
使用中断的方式来判断一个按键是否被按下,而不是程序循环执行来判断,这样可以提高程序的反应速度

2、实验环境
实验硬件:
* Raspberry Pi 3 控制器套件
* 黑色小按键 1 个
* 实验连接线若干
软件环境
* 操作系统:2016-09-23-raspbian-jessie
* 编译器:Python2



3、硬件连接
RPi GPIO PIN 标号图:

硬件连接示意图:
05.jpg
实物接线图:
06.jpg
4、
实验例程
  1. import RPi.GPIO as GPIO
  2. import time

  3. GPIO.setmode(GPIO.BCM)

  4. def my_callback(channel):
  5.     print('You pressed the button')
  6. #time.sleep(0.2)
  7. GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  8. GPIO.add_event_detect(18, GPIO.FALLING, callback=my_callback,bouncetime=100)

  9. i = 0
  10. while True:
  11.     i = i + 1
  12.     print(i)
  13.     time.sleep(1)
复制代码
5、程序下载
interrupts.py (332 Bytes, 下载次数: 8)
6、代码运行
  • 输入指令:cd Alsrobot,进入相应程序存储目录
  • 输入指令:ls,查看该目录下的所有文件
  • 输入指令:sudo python2 interrupts.py,运行程序
  • 程序功能是每隔 1 秒数值加 1 并打印输出,当你在任意时间按下按键时,效果如图所示,会随时被检测到。
07.jpg
7、简要说明
要检测按键是否被按下,或者GPIO输入接口的状态是否改变时,可以使用简单的循环程序实现,例如:
  1. while True:
  2.         if GPIO.input(18) == False:
  3.                 print('You pressed the button')
  4.         time.sleep(1)
复制代码
这种方式的缺点就是在检测语句中不能添加太多其他语句,否则你可能按下按键,但是程序已经执行过去了,并没有检测到按键按下时的状态,这种检测方式称之为循环检测。
使用中断就可以解决这个问题,中断可以关联一个程序,这样不管什么时间,当按键状态改变时(本例程中是按键从高到低),就会触发相应的程序。在本例中可以了解中断是如何工作的,首先,我们要定义一个程序,这里我将它命名为:my_callback,包含一个实参,参数指定的是输入触发中断。这个例程中,我们就是让树莓派在检测到按键按下时,打印一条语句,如下:
  1. def my_callback(channel):
  2.     print('You pressed the button')
复制代码
  • 中断语句:
  1. GPIO.add_event_detect(18, GPIO.FALLING, callback=my_callback,bouncetime=100)
复制代码
参数定义:
第一个参数:指定树莓派上使用的引脚,这里使用的是 GPIO18
第二个参数:中断触发方式,允许两种中断触发方式:GPIO.FALLING:引脚电平从高到低时,触发中断;GPIO.RISING:引脚电平从低到高时,触发中断
第三个参数:中断触发时,执行的程序
第四个参数:中断函数运行时间间隔,单位为:ms


回复

使用道具 举报

大神点评16

回复学习
回复

使用道具 举报

fox1962 2017-2-22 22:37 显示全部楼层
回复学习一下这个课程
回复 支持 反对

使用道具 举报

tubafeng 2017-3-12 16:58 显示全部楼层
学习啦!
回复

使用道具 举报

wang11876 2017-3-20 15:03 显示全部楼层
反反复复反反复复反反复复吩咐
回复 支持 反对

使用道具 举报

OUC_BD 2017-9-25 16:05 显示全部楼层
下谢谢谢谢谢谢
回复 支持 反对

使用道具 举报

Raspberry Pi 中断使用
回复 支持 反对

使用道具 举报


回复学习一下这个课程
回复 支持 反对

使用道具 举报

l5588464 2018-8-3 21:21 显示全部楼层
111111111111111111111
回复 支持 反对

使用道具 举报

您可能感兴趣的文章

您需要登录后才可以回帖 登录 | 立即注册

关注0

粉丝8

帖子147

发布主题
社区热门 MORE+
    社区热帖 MORE+