一、前言
前面兩節(jié)介紹了LED燈和按鍵輸入,那么這一講就基于按鍵學習一下外部中斷,目標是通過按鍵控制LED開燈和關燈。
二、硬件連接
連接好按鍵和LED燈,不懂的同學可以先看下前兩節(jié)的內容,硬件原理就不多做介紹了,樹莓派和單片機有所區(qū)別,對于樹莓派編程來說,我們更多的是做上層的應用,下層驅動的實現不會花太多的時間去研究。
三、編寫代碼并運行
示例代碼如下:
#!/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電平狀態(tài)(全局變量)
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介紹了樹莓派外部中斷的使用,功能比較簡單,但是很實用。好了,這一講的內容就這么多了,想了解更多樹莓派的知識可以關注我,后續(xù)我會繼續(xù)更新更多的教程。
閱讀全文