相關(guān)商品
【創(chuàng)客學(xué)堂】玩轉(zhuǎn)樹莓派之GPIO輸入與輸出
編輯:Artech2013-12-23 瀏覽次數(shù):6705
樹莓派(Raspberry Pi)本質(zhì)上是一臺(tái)Linux小電腦,但其板載的GPIO接口彰顯著它的獨(dú)特之處。掌握并控制好這些IO接口我們就可以將樹莓派變成一塊性能極高的單片機(jī)。本文通過“按鍵控制樹莓派LED燈”的實(shí)驗(yàn)給大家分享一下使用樹莓派GPIO進(jìn)行輸入輸出的經(jīng)驗(yàn)。
圖1 接好各種外設(shè)的樹莓派
一 準(zhǔn)備器材
下面通過一個(gè)“按鍵控制樹莓派LED燈”的實(shí)驗(yàn)給大家分享一下本人使用樹莓派GPIO進(jìn)行輸入輸出的經(jīng)驗(yàn)。
這個(gè)實(shí)驗(yàn)中我們選用Python語言對(duì)樹莓派GPIO口進(jìn)行編程。Python語言是一種面向?qū)ο蟮慕忉屝哉Z言。好在現(xiàn)在有中文版的教材《Raspberry Pi Python 編程入門》所以學(xué)習(xí)起來還是蠻輕松地。最新版的樹莓派上已經(jīng)預(yù)裝了Python軟件以及驅(qū)動(dòng)GPIO的軟件包。我們直接進(jìn)行編程就行了(如果沒有軟件包請(qǐng)按《愛上Raspberry Pi》書中所提方法進(jìn)行安裝)。
樹莓派為了減小成本,沒有I/O口的外設(shè),所以我們需要一些有I/O外設(shè)的擴(kuò)展板,在這里給大家推薦一款樹莓派原型擴(kuò)展板,它有專門為樹莓派設(shè)計(jì)的接口,它將樹莓派所有的GPIO接口全部引出,板上有一顆LED接到樹莓派GPIO25腳上,另有一顆按鍵接到GPIO24。板子的其余部分全部打上通孔可以讓玩家焊上自己的電路。
圖2 樹莓派原型擴(kuò)展板
首先,給大家演示一下用Python指令驅(qū)動(dòng)GPIO。打開樹莓派終端輸入 sudo python 用管理員身份打開python程序。依次輸入以下指令:>>>GPIO.setmode(GPIO.BCM)
>>>GPIO.setup(25,GPIO.OUT) #設(shè)置25管腳為輸出
>>>GPIO.output(25,GPIO.HIGH) #25腳輸出高電平
>>>GPIO.output(25,GPIO.LOW) #25腳輸出低電平
以上的指令可以控制管腳的輸出,python程序還可以讀取引腳的輸入,這將在接下來的例子中體現(xiàn)出來。
指令固然能控制I/O口,當(dāng)然我們最希望的還是能生成可執(zhí)行文件,樹莓派做到這一點(diǎn)自然也是毫無問題的。首先我們需要建立一個(gè)空文本,在文本中輸入以下程序(程序內(nèi)容如注釋所示)。
import RPi.GPIO as GPIO #調(diào)入GPIO庫
import time #調(diào)入時(shí)間庫
GPIO.setmode(GPIO.BCM)
GPIO.setup(24,GPIO.IN) #將24腳設(shè)置為輸入
#GPIO.setup(24,GPIO.IN,pull_up_down=GPIO.PUD_UP)
#將24腳設(shè)置成有上拉模式,如果用不帶上拉電阻的按鍵可以使用此句。
GPIO.setup(23,GPIO.OUT) #將23腳設(shè)置為輸出
count=0
while True: #循環(huán)執(zhí)行
inputValue = GPIO.input(24)#讀取鍵值
if(inputValue==0): #判斷鍵值
count=count+1
if(count%2==0):
print("THE LED IS ON NOW") #終端輸出
else:
print("THE LED IS OFF NOW") #終端輸出
time.sleep(0.3) #延時(shí)等待
if(count%2==0): #根據(jù)count的值決定LED燈是否開閉
GPIO.output(23,GPIO.HIGH)
else:
GPIO.output(23,GPIO.LOW)
time.sleep(0.01) #延時(shí)等待留給系統(tǒng)空閑時(shí)間
#注意:1、程序段的前的空格數(shù),Python程序用空格字符控制程序?qū)哟?,而不是C語言的“{}”。2、Python程序中的注釋符是“#”而不是“//”.
然后按下面的電路圖搭建電路,這里我用的是樹莓派原型擴(kuò)展板自帶的面包板自己搭建的電路。如果不想自己搭建電路也可以使用原型擴(kuò)展板上的自帶的LED燈和按鍵。只需要根據(jù)程序所示用語句“GPIO.setup(channel,GPIO.IN,pull_up_down=GPIO.PUD_UP)”將該輸入口設(shè)置成上拉模式即可。
圖3 按鍵與LED電路原理圖
圖4 插接好元器件的原型擴(kuò)展板
二 實(shí)踐環(huán)節(jié)
將文本保存命名為KEYLED.py文件。然后進(jìn)入樹莓派終端,輸入sudo python keyled.py ,運(yùn)行我們所寫的程序。我們可以看到當(dāng)按下按鍵時(shí),LED燈變亮,終端顯示THE LED IS ON NOW,當(dāng)按鍵再次按下時(shí),LED燈變滅,終端顯示THE LED IS OFF NOW。
圖5 輸入程序運(yùn)行指令
圖6 LED燈亮滅狀態(tài)顯示
樹莓派的GPIO應(yīng)用起來雖不如Arduino簡單易用,不過稍加練習(xí)很快也能運(yùn)用自如,這樣Arduino的很多模塊在樹莓派GPIO上也同樣能夠玩轉(zhuǎn)起來。
相關(guān)鏈接:
樹莓派二代:http://m.lifestyle201.com/goods-427.html
樹莓派原型擴(kuò)展板:http://m.lifestyle201.com/goods-491.html
樹莓派顯示器:http://m.lifestyle201.com/goods-386.html
愛上Raspberry Pi:http://m.lifestyle201.com/goods-410.html
愛上Raspberry Pi套件:http://m.lifestyle201.com/goods-433.html
用戶評(píng)價(jià)
暫時(shí)還沒有任何用戶評(píng)論