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