樹莓派是一塊僅為信用卡般大小的微型電腦,可用于嵌入式開發(fā)和計(jì)算機(jī)編程,目前在中小學(xué)創(chuàng)客教育活動(dòng)領(lǐng)域有著極為廣泛的應(yīng)用。借助于擴(kuò)展板及“積木”編程(比如古德微機(jī)器人網(wǎng)站),中小學(xué)生就可以比較輕松地使用樹莓派開發(fā)出例如超聲波測距、定時(shí)鬧鐘、聲控樓道燈、倒車提醒器等具有實(shí)際應(yīng)用價(jià)值的“產(chǎn)品”,甚至還有智能語音輸出、文字識(shí)別等更為高端的人工智能方面的應(yīng)用(與百度AI關(guān)聯(lián))。作為樹莓派的編程“黃金搭檔”,Python語言是目前正在廣泛使用的通用高級(jí)編程語言,它主要是為了強(qiáng)調(diào)代碼可讀性而開發(fā)的,語法允許使用更少的代碼行來表達(dá)概念;配合使用豐富的通用型傳感器和功能強(qiáng)大的語言“庫”模塊,使用Python語言編程進(jìn)行創(chuàng)客實(shí)驗(yàn)已經(jīng)成為樹莓派最為強(qiáng)勢的應(yīng)用之一(如圖1所示)。
圖1
二、簡易紅綠燈實(shí)驗(yàn)的預(yù)備知識(shí)
1.實(shí)驗(yàn)的預(yù)期效果三只并列排布的LED燈依次閃亮——先是綠燈亮10秒,熄滅;接著是黃燈持續(xù)閃爍三次,每次1秒;然后是紅燈亮10秒,熄滅,再綠燈亮10秒……反復(fù)循環(huán)這一過程,這是生活中最為常見的十字路口一組紅綠燈中的雛形。
2.實(shí)驗(yàn)器材樹莓派(帶電源線)主板一塊、紅黃綠LED燈各一只、六根母對母杜邦線,一臺(tái)聯(lián)網(wǎng)電腦(或直接給樹莓派接上顯示器、鼠標(biāo)和鍵盤)。
3.樹莓派的40Pin引腳樹莓派主板一側(cè)有兩排引腳,共40Pin(物理引腳BOARD編碼是從1依次到40)。在樹莓派的命令行窗口(通過遠(yuǎn)程桌面連接)中輸入“gpioreadall”命令,可顯示出所有的引腳編號(hào)及功能對應(yīng)關(guān)系(如圖2所示)。
圖2
通常情況下,Python語言編程庫都是使用BCM編碼(WiringPi編碼一般應(yīng)用于C++等編程平臺(tái)),這種編碼依據(jù)是BCM2835芯片的GPIO寄存器編號(hào)。如果按照功能來分類,除了8個(gè)GND(接地)端、3.3V和5V的電源正極各兩個(gè)之外,最為主要的部分就是17個(gè)可編程的GPIO(GeneralPurposeInput/Output:“通用型輸入輸出接口”),其BCM編碼分別是0-7、21-29兩組(物理引腳位置并非連續(xù)分布),可以用來驅(qū)動(dòng)傳感器、舵機(jī)等各種外設(shè)。使用樹莓派GPIO引腳與外設(shè)連接時(shí)必須要仔細(xì),在確定好待用的BCM編碼號(hào)后再與物理引腳一一對應(yīng)。本次實(shí)驗(yàn)所使用的紅、黃、綠三只LED燈的長引腳(正極)BCM編碼分別設(shè)置為5、6和13,所對應(yīng)的物理引腳BOARD編碼是29、31和33,分別用母對母杜邦線連接好;短引腳(負(fù)極)同樣使用杜邦線與三個(gè)GND連接,比如物理引腳BOARD編碼為25、30和39(如圖3所示)。
圖3
三、在樹莓派中使用Python編程實(shí)現(xiàn)對LED燈的控制
1.測試控制一只紅色LED燈的亮與滅連接好實(shí)驗(yàn)設(shè)備后給樹莓派通電開機(jī),稍后在聯(lián)網(wǎng)電腦的遠(yuǎn)程桌面連接中進(jìn)入命令行模式(出現(xiàn)“pi@raspberrypi:~$”提示符),輸入“python”后回車進(jìn)入Python界面(命令提示符變?yōu)椤啊贰贰贰保?;接著再輸入“importRPi.GPIOasGPIO”命令,作用是以GPIO為名導(dǎo)入RPi.GPIO庫,無錯(cuò)誤提示的話就代表Python已經(jīng)成功加載了RPi.GHIO庫(出現(xiàn)錯(cuò)誤提示就必須按照提示進(jìn)行更新或安裝);值得一提的是,RPi.GPIO本身是Python的一個(gè)庫模塊,樹莓派官方系統(tǒng)默認(rèn)已經(jīng)安裝,共作用就是允許用戶從代碼中控制各GPIO引腳。接著,輸入“GPIO.setmode(GPIO.BCM)”命令,意思是“通知”Python準(zhǔn)備使用樹莓派的BCM編碼模式來對各引腳進(jìn)行控制。由于紅色LED燈正極是接在BCM編碼5號(hào)上,因此在使用Python編程控制時(shí)就必須通過數(shù)字“5”來控制(而不是其對應(yīng)的物理引腳BOARD編碼25)。輸入命令“GPIO.setup(5,GPIO.OUT)”,意思是設(shè)置5號(hào)GPIO為輸出端(GPIO.OUT);接著輸入“GPIO.output(5,GPIO.HIGH)”命令,設(shè)置5號(hào)GPIO輸出高電平(GPIO.HIGH)。此時(shí)回車執(zhí)行該命令后,樹莓派上的紅色LED燈就會(huì)瞬間被“點(diǎn)亮”(如圖4所示)。
圖4
發(fā)光測試成功后,接著再發(fā)一條“GPIO.output(5,GPIO.LOW)”命令,設(shè)置5號(hào)GPIO輸出低電平(GPIO.LOW);回車,紅色LED燈熄滅,測試工作完成。2.編寫完整的Python程序在聯(lián)網(wǎng)電腦的Windows系統(tǒng)中使用PyCharm程序編輯器來編寫TrafficLED.py(或者可以直接遠(yuǎn)程進(jìn)入樹莓派系統(tǒng)中調(diào)用“編程”-“ThonnyPythonIDE”來編寫),程序的主體內(nèi)容就是控制三個(gè)LED燈依次點(diǎn)亮和熄滅(如圖5),以綠燈亮10秒為例,其命令語句為:GPIO.output(13,GPIO.HIGH)time.sleep(10.0)GPIO.output(13,GPIO.LOW)值得注意的地方:一是程序的最開始語句“#!/usr/bin/python3”的作用是指定由哪個(gè)Python解釋器來執(zhí)行腳本,因?yàn)橛械?a target="_blank">操作系統(tǒng)同時(shí)安裝了Python2和Python3(二者并不兼容);二是需要通過“importtime”命令來導(dǎo)入時(shí)間庫,因?yàn)槌绦蛑惺褂昧藄leep語句來控制燈亮、滅的持續(xù)時(shí)間,其中的數(shù)值參數(shù)單位為秒;三是程序的主體需要一直循環(huán),可使用語句“while1:”(條件永遠(yuǎn)為真);四是分別設(shè)置print語句用來顯示提示當(dāng)前LED燈的狀態(tài),比如“黃燈閃3s”。所有命令語句均輸入完成后,將其保存為Python文件TrafficLED.py(如圖5所示),并通過遠(yuǎn)程桌面復(fù)制粘貼到樹莓派的用戶目錄中(/home/pi/)。
圖53.調(diào)試運(yùn)行Python程序,控制LED燈實(shí)現(xiàn)紅綠燈效果在遠(yuǎn)程桌面窗口中雙擊從Windows中傳遞過來的TrafficLED.py程序文件,調(diào)用樹莓派中已經(jīng)安裝的ThonnyPythonIDE來打開;接著點(diǎn)擊上方的“Run”按鈕,程序就開始運(yùn)行:IDE窗口下方的Shell區(qū)域先是顯示“綠燈亮10s”的提示,此時(shí)連接在樹莓派上的綠色LED燈開始發(fā)光;10秒鐘后,提示信息變?yōu)椤包S燈閃3s”,綠色LED燈熄滅,黃色LED燈閃爍3秒;之后,提示信息變?yōu)椤凹t燈亮10s”,綠色和黃色LED燈都為熄滅狀態(tài),紅色LED燈發(fā)光(如圖6所示);10秒之后,提示信息變?yōu)椤氨据喗Y(jié)束,進(jìn)行下一輪”、“綠燈亮10s”,綠色LED燈又會(huì)再次亮起……
圖6
責(zé)任編輯人:CC
-
python
+關(guān)注
關(guān)注
55文章
4767瀏覽量
84375 -
樹莓派
+關(guān)注
關(guān)注
116文章
1688瀏覽量
105456
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論