一、前言
上一講介紹了如何點(diǎn)亮一個(gè)LED燈,了解了樹莓派的編程方法和運(yùn)行方式,其實(shí)就是控制GPIO輸出。
按照慣例,這一講應(yīng)該要講GPIO的輸入了。
特別說明:關(guān)于樹莓派的編程方法我這里就不再贅述了,不知道的同學(xué)可以翻一下我第5講的內(nèi)容。
二、硬件連接
硬件上要準(zhǔn)備一個(gè)按鍵板,或者用導(dǎo)線短接GPIO模擬電平跳變也行(不懂慎用,以防短路),把按鍵的一端接到樹莓派任意一個(gè)GPIO口,另外一端接VCC或者GND。
硬件原理我就不說了,感興趣的同學(xué)可以自己查找相關(guān)資料,或者看下我之前發(fā)布的RT-thread按鍵輸入教程。
我這邊用的還是微雪的擴(kuò)展板Pioneer600。
三、編寫代碼并運(yùn)行
按鍵檢測(cè)代碼示例:
#!/usr/bin/python
#-*- coding:utf-8 -*-
import RPi.GPIO as GPIO #導(dǎo)入RPi.GPIO庫
import time #導(dǎo)入time庫
KEY = 20 #根據(jù)自己的引腳號(hào)設(shè)置
GPIO.setmode(GPIO.BCM) #引腳使用BCM編碼
GPIO.setup(KEY,GPIO.IN,GPIO.PUD_UP) #KEY引腳設(shè)置為上拉輸入模式
while True:
time.sleep(0.05) #延時(shí)0.05s
if GPIO.input(KEY) == 0: #如果KEY引腳為低電平(按鍵被按下),打印"KEY PRESS"
print("KEY PRESS")
while GPIO.input(KEY) == 0: #如果按鍵一直被按下(沒有松開),一直在while循環(huán)中出不去(防止按鍵長(zhǎng)按一直打印)
time.sleep(0.01)
注:
#!/usr/bin/env python,定義python解析腳本的絕對(duì)路徑
#-*- coding:utf-8 -*-,python文件為utf-8格式,否則無法寫入中文注釋
運(yùn)行結(jié)果:
四、結(jié)束語
按鍵輸入本質(zhì)上就是讀取GPIO的電平狀態(tài),按鍵本質(zhì)是通過短接IO口和VCC或GND,從而改變IO口的電平狀態(tài)。結(jié)合原理去看代碼會(huì)更容易理解。好了,這一講的內(nèi)容就這么多了,想了解更多樹莓派的知識(shí)可以關(guān)注我,后續(xù)我會(huì)繼續(xù)更新更多的教程。