樹莓派“識色”圖形化編程案例二則
文/山東省招遠第一中學 牟曉東
常規(guī)的顏色傳感器內(nèi)置有紅、綠、藍三基色傳感元器件,在濾色器的作用下從可視光的區(qū)域中進行顏色數(shù)據(jù)的獲取,輸出RGB數(shù)值。如果將顏色傳感器接入樹莓派進行“識色”,然后在古德微機器人網(wǎng)站進行“積木”式圖形化編程,可以非常方便地開發(fā)出一些比較有趣、實用的創(chuàng)客作品模塊,比如看卡識色的“變色龍”燈帶和視覺障礙者的“紅綠燈語音提醒器”。
一、看卡識色的“變色龍”燈帶
1.功能實現(xiàn)
根據(jù)顏色傳感器獲取到不同卡片(或其它物體)的顏色信息,分解出對應的RGB數(shù)值,作為燈帶60顆燈珠的發(fā)光三基色,相當于“復制”卡片的顏色再“粘貼”到每一顆燈珠上,實現(xiàn)“變色龍”燈帶的顯示效果。
2.實驗器材及連接
實驗器材包括樹莓派3B+和古德微擴展板各一塊,GY-33 TCS34725顏色傳感器(帶遮光筒)一個,可編程ws281x燈帶一條,公對母異色杜邦線四根,各種顏色卡片若干。
首先將燈帶插入擴展板的18號引腳,注意三根線的標注要與擴展板一一對應;接著,將四根杜邦線一端連接顏色傳感器(VCC、GND、SCL和SDA端),另一端連接至擴展板IIC接口(VCC、GND、CLK和DATA端);最后,給樹莓派通電,啟動操作系統(tǒng)(如圖1)。
?

3.進行圖形化編程
訪問古德微機器人網(wǎng)站(http://www.gdwrobot.cn),登錄進入自己賬號后點擊“設備控制”進入“積木”界面,開始圖形化編程:
首先,通過模塊語句“設置GPIO‘18’可控制燈帶‘60’個燈并設置亮度為‘50’”對燈帶進行初始化;接著,建立一個“重復當‘真’執(zhí)行”的循環(huán)結構,通過模塊語句“輸出調(diào)試信息‘獲取顏色檢測傳感器的數(shù)據(jù)’”,將顏色傳感器獲取的RGB數(shù)據(jù)以數(shù)組的形式在LOG調(diào)試信息區(qū)輸出,比如:“[172,144,240]”;然后建立三個變量:“紅色分量”、“綠色分量”和“藍色分量”,分別賦值為從RGB數(shù)據(jù)列表中的“第一”、“第二”和“最后”序列值,即分別獲取對應的顏色分量數(shù)值;再建立一個內(nèi)部循環(huán)結構,設置60個燈珠的發(fā)光顏色為對應的三個變量值;最后,添加“燈帶刷新顯示”模塊語句,控制燈帶按照設置的顏色效果發(fā)光,再添加“等待0.2秒”,防止程序運行占用過多的系統(tǒng)資源而“死機”(如圖2)。
?

4.測試“變色龍”燈帶
將程序保存后點擊“連接設備”,再點擊“運行”按鈕進行測試。此時,會在調(diào)試信息區(qū)不斷顯示有顏色傳感器實時獲取的各組RGB顏色數(shù)據(jù);嘗試將紅色、綠色、藍色和黃色卡片分別放置于顏色傳感器的遮光筒附近,燈帶立刻會隨之變色,發(fā)出對應顏色的光(如圖3),實現(xiàn)了“變色龍”燈帶的顯示效果。
?

?
二、視覺障礙者的“紅綠燈語音提醒器”
1.功能實現(xiàn)
顏色傳感器“負責”實時檢測十字路口的紅綠燈變換情況,根據(jù)不同顏色的燈光信號信息,樹莓派控制音箱發(fā)出對應的語音提醒信息,比如“綠燈,行!”、“紅燈,停!”。
2.實驗器材及連接
實驗器材包括樹莓派3B+和古德微擴展板各一塊,顏色傳感器一個,杜邦線四根,紅色、黃色和綠色LED燈各一支,音箱一個。
保持顏色傳感器與案例1相同的連接方式,然后,將紅色、黃色和綠色LED燈分別連接至擴展板的5號、6號和12號引腳(注意長腿為正極、短腿為負極),用來模擬路口紅綠燈;接著,將音箱的連接線插入樹莓派的圓形音頻輸出孔,通電,啟動操作系統(tǒng)(如圖4)。
?

3.進行圖形化編程
首先,建立一個名為“紅綠燈”的函數(shù),作用是模擬路口“紅綠燈”實現(xiàn)的功能:綠燈(12號)亮10秒,閃爍三次,熄滅;黃燈(6號)亮3秒,熄滅;紅燈(5號)亮10秒,熄滅(如圖5)。
?

接著,建立對應的子線程(注意名稱要與函數(shù)完全一致),對函數(shù)進行調(diào)用;然后,再建立一個“重復當‘真’執(zhí)行”的循環(huán)結構,將顏色傳感器獲取的顏色數(shù)據(jù)在LOG調(diào)試信息區(qū)進行實時顯示輸出;建立兩個變量“紅色分量”和“綠色分量”,分別為其賦值為顏色傳感器輸出數(shù)據(jù)的RGB列表中的第一個和第二個數(shù)據(jù);建立第三個變量,名為“最大值分量”,為其賦值為RGB列表中數(shù)值最大的數(shù)據(jù),表示RGB分量中最“占優(yōu)勢”的顏色對應數(shù)據(jù);接著,建立一個“如果…執(zhí)行…否則如果…執(zhí)行…否則…”三分支選擇結構,判斷條件為“最大值分量”與“綠色分量”或“紅色分量”是否相等,相等則說明對應顏色的LED燈亮起,執(zhí)行的動作分別是輸出文字調(diào)試信息和音箱播放對應的語音信息:“綠燈,行!”和“紅燈,停!”,注意要分別添加“等待3秒”模塊語句,作用是等待音箱播放完語音提醒;如果兩個條件均不符合,說明是黃色LED燈亮起,則執(zhí)行“黃燈,等!”的文字信息輸出和提醒語音的播放(如圖6)。
?

4.測試“紅綠燈語音提醒器”
將程序保存后點擊“運行”按鈕進行測試,“紅綠燈”LED開始循環(huán)閃亮工作,同時顏色傳感器在不斷檢測燈光的顏色,并且音箱中也會響起對應的“綠燈,行!”、“黃燈,等!”和“紅燈,停!”提醒語音,實現(xiàn)了預設的視覺障礙者“紅綠燈語音提醒器”的功能。
?