一、前言
前面两节介绍了LED灯和按键输入,那么这一讲就基于按键学习一下外部中断,目标是通过按键控制LED开灯和关灯。
二、硬件连接
连接好按键和LED灯,不懂的同学可以先看下前两节的内容,硬件原理就不多做介绍了,树莓派和单片机有所区别,对于树莓派编程来说,我们更多的是做上层的应用,下层驱动的实现不会花太多的时间去研究。
三、编写代码并运行
示例代码如下:
#!/usr/bin/python
#-*- coding:utf-8 -*-
import RPi.GPIO as GPIO #导入RPi.GPIO库
import time #导入time库
LED = 26 #LED引脚号
KEY = 20 #按键引脚号
GPIO.setwarnings(False) #不加这句会有警告,因为该引脚已经被设置成了非默认值(也可以不加,不影响正常使用)
GPIO.setmode(GPIO.BCM) #使用BCM编码的引脚号
GPIO.setup(LED,GPIO.OUT) #配置LED引脚模式
GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP) #设置KEY引脚模式
global led_status #记录LED电平状态(全局变量)
led_status = 0
def KEYInterrupt(KEY): #外部中断服务函数
global led_status
if led_status :
GPIO.output(LED,GPIO.LOW) #关灯
print("LED OFF")
led_status = 0
else :
GPIO.output(LED,GPIO.HIGH) #开灯
print("LED ON")
led_status = 1
GPIO.add_event_detect(KEY,GPIO.FALLING,KEYInterrupt,200) #KEY:按键引脚号,GPIO.FALLING:下降沿模式,KEYInterrupt:中断服务函数,200:消抖时间(ms)
while True:
time.sleep(1)
运行结果:
按键按下,LED点亮,打印“LED ON”。再按一次,LED熄灭,打印“LED OFF”。
四、结束语
这一讲结合了LED和KEY介绍了树莓派外部中断的使用,功能比较简单,但是很实用。好了,这一讲的内容就这么多了,想了解更多树莓派的知识可以关注我,后续我会继续更新更多的教程。
阅读全文