這篇只結合超音波感測器與馬達的應用,做簡單的練習。(尚未教到:光線感應器與紅外線感應循線感測。為求簡化,暫不加入聲光控制。)
關於超音波偵測與非關馬達的應用,請見前篇 [mbot] 超音波感測器(1/2) 幾個無馬達的簡單應用:超音波琴、計數器@精讚
超音波模組簡單介紹:
超音波模組預設接到mCore連接埠3,回傳數值到小數第三位,單位是公分,範圍:3cm~400cm。量測角度為30度。
超音波感測器:偵測距離的遠近。應用-倒車雷達、自動避障、自動跟隨、繞障礙物、偵測形體。
左邊為發射端超音波,標示著T。右邊則為接收端超音波,標示著R。
使用前須自我檢查超音波功能:
用手掌在超音波模組前方移動,觀察數值變化情形。提問學生:最大多大?最小多小?數值是用什麼單位呢?
簡單程式說出數值,作為檢驗學生手上的機器人是否正常,能做到~才進行下一步驟。
如果不能正常執行,重新檢查連接、程式與驅動。
學習積木:
使用條件判斷"如果"mBot距離障礙物太近,則強制轉彎或退後,"否則"就前進。
學習如果否則 與 。
練習(一)緊急煞車
按下按鈕後,mBot開始前進,在障礙物前方5公分時,緊急煞車。
或
要注意反應時間與緩衝距離。如果否則~如果前方沒有障礙物,就會前進,否則停止。
其他寫法:當按下按鈕時,機器人往前走,直到偵測到障礙物,才會停止。
或
還有很多寫法,例如使用 來做為條件判斷。
練習(二)避障轉彎
按下按鈕後,mBot開始前進,超音波偵測到前方5公分有障礙物時,先後退再直角右轉繼續走。
或
遇到障礙物之後是左轉還是右轉?一開始學生會寫右轉,但很容易一直在空間中打轉。所以~要讓機器人車可以改變轉彎方向。如果經費夠,當然是裝置三組超音波感測器,判斷前面與左右,不然就是利用這種,增加一個舵機來操控超音波,讓它可以左右轉頭,做更精準的選擇。
(圖片來源為官網http://www.gmii.tw/makeblock/mbot3978551)
練習(三)遇到障礙物隨機左右轉
偵測到前方10公分有障礙物,則停下來後退,隨機左右轉。如何做到隨機呢?方法好幾種。
參考一:利用隨機選擇數字做個條件,搭配如果否則。
參考二:也可以用比大小做為條件,例如這樣,小於50右轉,否則左轉。
參考三:學生方彥寫的,已經成功能過迷宮。雖然有點繞路,但是成功囉!(他說~有些等待時間因車子而異,他的程式未必通用每台車,使用者要自己微調。)
練習(四)避障練習~繞過障礙物
偵測到前方10公分有障礙物,自動右轉前進再左轉,繞過障礙物,然後持續前進。
這個需要事先知道障礙物的大小,車子不能碰到障礙物。
中間看起來很長,所以用自訂積木來操作閃避繞過(Dodge around)障礙物的動作。
練習(五)自動跟隨並保持距離
車子原本靜止,在手掌移到車子前方距離20公分處,進入跟隨模式,調整前進後退,太近就後退,拉遠就前進,始終與手掌保持10公分的距離。(先不考慮跟隨轉彎)
)
變化:可以用車子帶著另一台車子前進。第一台車在前方慢慢走,第二台車走較快,接近第一台車之後,就放慢速度跟著第一台車前進了。)
第二台車可以怎麼寫呢?(我自己的想法是在偵測距離之內維持前進轉速100,所以在前方加一個積木,最後的如果否則變成轉速100。但並未經過測試。)
練習(六)配合超音波感測距離來調整馬達速度和等待時間
用超音波感應器來控制馬達速度的快與慢。
與
將超音波距離設為變數,可以控制~越接近障礙物發出的警示音與燈光的頻率(等待時間)變快。例如距離越近,車速越慢。
補充:馬達轉速絕對值為255,超音波偵測距離400,400/255=1.6
以此類推,之後用光線感應器,也可以類似方式,利用偵測出的光直來控制馬達行走快慢。
光感偵測值為0-1023 值越高,代表亮度越高。1023/255=4
參考資料:
- scratch(mblock)程式設計 使用mbot機器人。 李春雄、柳家祥、李暐詒(台科大圖書)
- mbot入門與實習 吳志宏(翰吉出版)
- 南開科大吳錫修老師的投影片資料很完整。mBot 教學5 超音波感測應用 https://www.slideshare.net/sshiouwu/mbot5