眾所周知,“線程”指的是一組可以在程序中獨立執行的計算機指令集合,引入“多線程”運行機制的根本目的是為了更好利用CPU資源。如果程序在運行過程中只有一個線程的話(單線程方式),那么下一個任務必須要等到上一個任務結束后才能進行,這是一種低效的“串行”流程;如果使用多線程,就可以在主線程執行任務的同時來“并行”執行其他的任務,不需要等待時間,從而極大提高了程序的運行效率。
【實驗目的】
在樹莓派中通過古德微機器人平臺編程,實現多線程控制LED燈陣彼此獨立地運行,各個LED燈的閃亮頻率均不同(“頻閃”效果),驗證計算機編程中多線程運行機制的高效性。
【實驗器材及連接】
樹莓派一塊,古德微擴展板一塊,紅、綠、黃、藍色LED燈各一支。
首先將古德微擴展板正確插入樹莓派中,注意要四周均勻小心用力,然后將四支LED燈分別插入到擴展板的5號、6號、12號和16號插孔,注意LED燈的長腳為正極、短腳為負極,必須正確插入插孔上標注有“+”、“-”標記的對應處,最后將樹莓派電源線連接好,通電啟動系統(如圖1所示)。
圖1
【平臺編程與程序運行調試】
1.登錄古德微機器人平臺
使用瀏覽器訪問http://www.gdwrobot.cn,點擊右上角的“登錄”并輸入自己的賬號和密碼,然后點擊“設備控制”進入“積木”編程界面,再點擊“連接設備”按鈕出現五個連續的綠色對勾提示,表示連接成功(如圖2所示)。
圖2
2.進行“積木”編程
“積木”編程非常簡單,我們只需將對應的命令語句塊從左側“積木”區域拖至中央空白編程區進行組合即可。程序包括主程序和四個函數共兩大部分,主程序是順序執行的四個子線程調用語句塊,操作方法是從左側的“線程”處將“添加子線程,線程函數名為‘xxx’”拖入編程區,注意其中的線程函數名必須是英文名稱。每個子線程就對應主程序待調用的一個函數,而每一個函數都是控制所對應的LED燈亮滅交替,通過設置不同的等待時間來實現不同的閃爍頻率,以第一個LED5函數為例:
首先調用“控制5號小燈亮”命令語句,然后通過“等待0.1秒”命令語句讓其保持通電的發光狀態持續0.1秒;接著“控制5號小燈滅”,第二條“等待0.1秒”命令語句的作用是保持該LED的熄滅狀態持續0.1秒。四個命令語句循環執行,最終實現的效果就是控制插在古德微擴展5號插孔的紅色LED燈先亮0.1秒、再滅0.1秒,然后再亮0.1秒、滅0.1秒……即控制該LED燈以5Hz的頻率(周期是兩個0.1秒相加)進行“頻閃”。其它三支LED燈的控制函數分別對應LED6、LED12和LED16,語句基本一致,惟一不同的是等待的時間分別設置為0.2秒、0.5秒和1秒(可自行設置,目的是進行對比觀察),即分別實現2.5Hz、1Hz和0.5Hz頻率亮、滅的“頻閃”效果(如圖3所示)。
圖3
3.程序的運行調試
程序編寫完畢之后,點擊“保存”按鈕,將程序保存為“四支小燈多線程”,接著點擊右上角的“運行”按鈕進行程序的調試。此時,主程序就會“同時”調用四個函數進行多線程運行,每個子線程函數都會“自私”地按照自己的指令來控制LED燈閃爍,互不干擾,我們就會看到四支不同顏色的LED燈各自以各自的頻率閃爍起來(如圖4所示),這就是古德微樹莓派多線程實現LED燈陣的“頻閃”效果。
圖4
責任編輯人:CC
-
led燈
+關注
關注
22文章
1593瀏覽量
109207 -
樹莓派
+關注
關注
120文章
1910瀏覽量
106746
發布評論請先 登錄

用樹莓派2控制一個LED燈
利用線程的互斥實現串口多線程收發數據
關閉樹莓派的電源指示燈(紅)和狀態指示燈(黃)

評論