牟曉東
今年開始藍橋杯青少組改用STEMA評測考試。《電腦報》將通過解析一系列模擬題讓大家更好地理解大賽的新變化。
第二題“噪音監測儀”(難度系數2,20個計分點):
隨著人們越來越集中到大城市生活,城市的噪音污染也成了日益突出的問題,現制作一個簡易的噪音檢測儀。
硬件準備:
1個聲音傳感器【接入A0#管腳】,4個LED小燈【分別接入5#、6#、12#、16#引腳】,1個模數轉換模塊【接入專用接口】,杜邦線若干。
編程實現:

(1)程序開始時,LED燈全部熄滅;
(2)當0≤聲音值<8000時,只有5#小燈點亮;
(3)當8000≤聲音值<16000時,只有6#小燈點亮;
(4)當16000≤聲音值<24000時,只有12#小燈點亮;
(5)當24000≤聲音值時,只有16#小燈點亮;
(6)如此循環。
判斷標準:
4分:實現“編程實現”中的(2);4分:實現“編程實現”中的(3);
4分:實現“編程實現”中的(4);4分:實現“編程實現”中的(5);
4分:完全符合題意。
1.審清題意,抓住關鍵點

“噪音監測儀”的關鍵考點是“多分支選擇結構”,通過聲音傳感器來監測周圍環境的聲音值范圍,作為控制信號對特定的LED燈進行“點亮”。
(1)聲音傳感器不同于上一題中的光敏傳感器,它只有三只引腳,分別是VCC電源正極、GND接地和OUT輸出端。該輸出端如果連接至擴展板的數字D端,就會只輸出0和1兩個數值;題目中已經明確提示“接入A0#管腳”,也就是模擬輸出信號,這與光敏傳感器的檢測范圍一致,仍為0-32767,只是不必做“映射”處理(與題目中的8000、16000、24000等數值基本是吻合的)。
(2)擴展板的24號A0#管腳分布順序是VCC、GND、D和A0,而聲音傳感器的三只引腳順序是VCC、GND和OUT,因此必須借助三根公對母杜邦線來連接,跳過擴展板中間的D(數字輸出端)插孔。同時,為了盡量減少連接錯誤,建議在平時訓練時就使用多色杜邦線來分別標識不同的功能引腳,如紅色連接VCC、黑色連接GND、藍色或綠色連接信號輸出端等。
2.實驗器材的安裝
按照題目要求,插入四支LED燈(長腿為正極、短腿為負極);將模數轉換模塊的長針腳插入IIC區域;將聲音傳感器通過杜邦線連接到擴展板24號插孔;最后,給樹莓派接通電源,啟動操作系統。
3.編程實現“噪音監測儀”
(1)聲音傳感器模擬信號的處理
訪問www.gdwrobot.cn登錄古德微機器人平臺。建立變量“聲音值”,為其賦值為“基礎”中的“從ADS 0 獲取模擬信號”;構建使用“輸出調試信息'聲音值'”語句,將該數據輸出顯示在LOG區。
(2)構建多分支選擇結構
從“條件”中構建“如果…執行…否則如果…執行…”四分支選擇結構,前三個分支的判斷條件是使用“和”(邏輯與:兩個條件要同時滿足),將變量“聲音值”進行數值區間判斷,比如第一個“當0≤聲音值<8000時”條件,編程語句要寫成“'0≤聲音值'和
'聲音值<8000'”;其余兩個分支相似,最后一個分支是“24000≤聲音值”。一定要注意各數值區間的臨界值,不可以有交集。
每個分支選擇結構的執行部分很簡單,只須控制對應的某支LED“亮”,其余三支LED“滅”,滿足題意。
(3)完善細節
將以上語句全部放置于“重復當真”的循環結構中,在循環體外添加“等待0.1秒”語句,防止循環過多過快占用系統資源。
4.運行程序,檢測“噪音監測儀”
在平臺編程環境中點擊“連接設備”,正常的話再點擊“運行”按鈕,靠近聲音傳感器嘗試不斷提高音量來模擬環境中的不同噪音值,四支LED燈會根據“噪音”的大小分別亮起(如圖1),實現了題目要求。最后將程序按照要求保存為“02.txt”,并上傳至考試系統中即可。
5.程序的兩處改寫“升級”
雖然程序代碼已經實現了題目要求,但其實可以進行兩處的改寫“升級”:
一是將四支LED的熄滅語句集中放置于循環結構的開始部分,每次循環開始就先熄滅,然后在每個分支選擇中僅控制對應的一支LED燈“點亮”即可,這樣就能從之前“4乘4”的16條開關燈語句變為“4加'4個1'”的8條開關燈語句;
二是在構建多分支選擇結構時,根據題意進行“倒序”判斷:首先判斷變量“聲音值”是否大于等于24000(“是”則點亮16號LED燈);否則的話,再判斷它是否大于等于16000,此時就相當于判斷“聲音值”是否在16000與24000之間(“是”則點亮12號LED燈);再“否則”的話,再判斷它是否大于等于8000(“是”則點亮6號LED燈),否則就只剩下一種可能:“聲音值”在0和8000之間,就點亮5號LED燈(如圖2)。這樣代碼精簡了很多而效果相同。