国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

藍橋杯樹莓派模擬題解析三:“電子測距儀”

2021-07-27 23:03牟曉東
電腦報 2021年6期
關鍵詞:數(shù)碼管分支超聲波

牟曉東

本文以模擬題“電子測距儀”為例,進行題目解析。

第三題“電子測距儀”(難度系數(shù)3,25個計分點):

在日常生活中,我們經(jīng)常會需要測量距離,電子測距儀作為一種測距設備,可以很方便地幫助我們測出距離,現(xiàn)制作一個簡易的電子測距儀。

硬件準備:

1個按鍵模塊【接入25#引腳】,1個數(shù)碼管【接入IIC接口】,1個超聲波傳感器【接入超聲波專用接口】,杜邦線若干。

編程實現(xiàn):

(1)程序開始時,數(shù)碼管沒有顯示;

(2)當按鍵按下并且按住時,數(shù)碼管顯示當前設備測試的距離值(只顯示整數(shù)部分),測量顯示的距離范圍為2-400cm;

(3)當測量到的距離大于400或者小于2cm時,數(shù)碼管顯示4個0;

(4)當按鍵松開時,數(shù)碼管不顯示;

(5)如此循環(huán)。

判斷標準:

3分:實現(xiàn)“編程實現(xiàn)”中的(1);

5分:實現(xiàn)“編程實現(xiàn)”中的(2);

7分:實現(xiàn)“編程實現(xiàn)”中的(3);

5分:實現(xiàn)“編程實現(xiàn)”中的(4);

5分:完全符合題意。

1.審題

“電子測距儀”的關鍵考點是使用分支選擇結構的嵌套,將超聲波傳感器檢測到的不同范圍距離值在數(shù)碼管上進行顯示;另外,還必須要特別注意數(shù)碼管的使用前設置(如先關閉再調節(jié)亮度等),以及如何單獨控制各個數(shù)字位的數(shù)據(jù)顯示。

(1)通常使用的HC-SR04超聲波傳感器的有效測距范圍為2-400cm,數(shù)碼管則最多可顯示四位數(shù)字;因此,題目中的要求(2)其實也只是使用了右側的1號、2號和3號低位數(shù)碼管,最左側的0號是處于“空閑”狀態(tài)。

(2)超聲波傳感器進行測距的返回值為9位小數(shù),必須在輸出至數(shù)碼管顯示前進行“取整”操作;還要將這個三位數(shù)進行百位、十位和個位的逐一“分解”,分別輸出至數(shù)碼管的1號、2號、3號,這步操作是該題的難點,需要使用數(shù)學中的“除法”和“取余數(shù)”相結合的操作方法來實現(xiàn)。

(3)按鍵的編程控制部分需要使用“獲取25號按鈕檢測結果”語句,其返回結果為0和1,分別對應“松開”和“按下”兩種狀態(tài)。

2.實驗器材的安裝

按照題目要求,將按鍵模塊接入25號的三個引腳;超聲波傳感器有四個引腳,接入專用接口(擴展板的20和21號);將數(shù)碼管的四個引腳(VCC、GND、SCL和SDA)接入IIC接口(Up列);最后,給樹莓派接通電源,啟動操作系統(tǒng)(如圖1)。

3.編程實現(xiàn)“電子測距儀”

(1)進入平臺編程環(huán)境

訪問古德微機器人平臺(www.gdwrobot.cn)。

(2)數(shù)碼管的“預處理”

數(shù)碼管在調用前必須要先進行“關閉”的操作,而且題目(4)也明確有“按鍵松開時不顯示”的要求;由于數(shù)碼管的關閉需要逐個進行,為減少代碼數(shù)量,此時應該考慮建立函數(shù)“關閉數(shù)碼管”,順序關閉0-3號數(shù)碼管。同時,在程序開始調用該函數(shù)后,添加一條“設置0號數(shù)碼管的亮度為1”語句。

(3)構建“外層”分支選擇結構

建立變量“按鍵”,為其賦值為“獲取25號按鈕檢測結果”;接著建立“如果…執(zhí)行…否則…”分支選擇結構,對變量“按鍵”的值是否為1進行判斷,是的話表示為“按下”狀態(tài),準備實現(xiàn)題目中(2)和(3)的要求;否的話(值為0),關閉數(shù)碼管顯示,實現(xiàn)題目中(4)的要求。

(4)構建“內層”分支選擇結構

如果判斷按鍵為“按下”的狀態(tài),則建立變量“距離”,賦值為“超聲波測距”,并且增加“獲取整數(shù)”處理后進行調試信息的LOG區(qū)輸出;接著再構建“如果…執(zhí)行…否則…”分支選擇結構,判斷超聲波測量的距離值是否在2-400cm的正常測量范圍內;否的話,使用“設置0/1/2/3號數(shù)碼管顯示0”四個語句,控制顯示4個0,實現(xiàn)題目(3)的要求;是的話,建立變量“百位”、“十位”和“個位”:

為變量“百位”賦值為“距離除以100”,取出該三位數(shù)的最高位;

為變量“十位”賦值為先“距離除以100”后取余數(shù)、再將余數(shù)“除以10”;

為變量“個位”賦值為先“距離除以10”、再將商“取余數(shù)”。

最后,分別使用三個“設置1/2/3號數(shù)碼管顯示百位/十位/個位”,其中的“并顯示點0”的意思是控制不顯示數(shù)碼管中的小數(shù)點。

(5)完善細節(jié)

將相關語句按照題目要求放置于“重復當真”的循環(huán)結構中,在循環(huán)體內的兩層分支選擇結構的最后均添加一條“等待0.1秒”語句,防止循環(huán)過快(如圖2)。

4.調試程序

在平臺編程環(huán)境中點擊“連接設備”,正常的話再點擊“運行”按鈕,對照題目中的各種情況進行多次測試,包括程序開始和按鍵松開時“數(shù)碼管不顯示”、按鍵按下并且按住時的正常測距范圍(2-400cm)顯示實際測量值與超范圍時顯示4個0(如圖3),均實現(xiàn)了題目要求。

最后將程序按照要求保存為“03.txt”,下載并上傳至考試系統(tǒng)中即可。

5.程序“升級”

程序代碼仍然可以進行兩處改寫“升級”:

一是不建立變量“按鍵”,直接在外層分支選擇結構中將“獲取25號按鈕檢測結果”作為判斷條件,因為該返回值只有0和1,與按鍵的“松開”與“按下”是對應的——數(shù)值“1”在很多編程語言中都是表示邏輯真;二是將數(shù)碼管顯示0的四行語句從主程序中去除,將它們增加至新函數(shù)“數(shù)碼管顯示0”中,雖然在主程序中只調用一次,但整體的簡潔性會更好(如圖4)。

再次運行程序,同樣也能夠實現(xiàn)題目要求。

猜你喜歡
數(shù)碼管分支超聲波
物理項目教學設計,用單片機控制四位數(shù)碼管顯示
超聲波診斷甲狀腺結節(jié)的臨床應用觀察
Arduino編程
Arduino編程
基于git工具的多分支并行開發(fā)上線流程
MC9S08FL16單片機數(shù)碼管靜態(tài)顯示分析
用“分散數(shù)論”對“哥德巴赫猜想”的初等證明
蝙蝠的超聲波
含有二階冪零鞍點的雙同宿環(huán)附近的極限環(huán)分支
蝙蝠的超聲波