micro:bit 自走車登月計畫 – 單元(五) 未知探險-超音波距離感測器

這個單元,我們將讓MoonCar 到處去探險,探險的過程當中,可能會遇到不少障礙物。所以我們會幫MoonCar 升級裝備~超音波距離感測器,並學習如何讓MoonCar 能偵測障礙物。

一、 超音波功能小知識:

超音波距離感測器,顧名思義與超音波有點關係,這個感測器有一個發射超音波的裝置,與一個接收超音波的裝置。就像蝙蝠一樣,它會持續發出超音波,當超音波打在障礙物上會反射回來,經由計算接收裝置接收到的時間,推測出距離。

二、 micro:bit 登月小車 裝備升級:

拿出超音波距離感測器,並將它安裝在MoonCar 位於前方有一組2*4 的排座,排座分為兩排,第一排是[V, P3, P9, G],第二排是[V, SDA, SCL, G],我們要安裝在第一排,第二排則是作為I2C 傳輸使用,可不要接錯了喔~

三、 micro:bit 登月小車程式撰寫:

馬上就來試試這個新裝備吧!首先打開MakeCode 並點選程式列表的"登月小車",找到(超音波距離感測器)並將它拖曳出來。

虛線內的程式已無法順利執行請直接跳過。
================================================================================
這個程式會自動幫我們計算出,現在超音波偵測到的距離,單位是公分。請將程式拉到顯示數字內,然後一起放到"重複無限次"裡,並加上一暫停時間。

大家有沒有發現,micro:bit 顯示偵測到的數字時,似乎有些不該亮的點在那閃動。這是因為我們的超音波距離感測器是連接到micro:bit 的P3 與P9 ,由下圖的micro:bit 腳位圖可知,這兩個接腳有標示LED Col 的字樣,這表示它們與micro:bit 的5*5 LED 顯示有關聯。當我們啟用超音波距離感測器的功能時,也間接地啟用了LED ,所以與LED Col 1 和LED Col2 有關聯的LED 就會被強制開啟,這也是為什麼顯示的過程中有不該亮起或閃動的LED 了。

================================================================================
因為超音波使用的腳位與正面顯示的LED腳位有部分相同,所以使用超音波時會自動將正面LED矩陣關閉,為了強制顯示數值,我們將使用重置的指令讓超音波能與螢幕同時使用。

將程式下載到micro:bit 裡,就能看到micro:bit 正面顯示感測的數值囉~

micro:bit 小車感測數值

您也可以使用MakeCode 本身有的序列寫入的功能,顯示系統監控(裝置)可以印出偵測到的數值並自動繪製曲線圖,但是只能使用Google Chrome瀏覽器,並且配對成功才能正常顯示喔~像小編使用FireFox 就不行~哭哭。

大家是不是都能偵測到距離了呢?接下來我們要活用這個功能,讓MoonCar 遇到障礙物前,能提早閃避。我們可以使用邏輯程式來編寫避障功能。

我們想要的移動模式是這樣的~MoonCar 移動的過程當中,不斷透過超音波去偵測距離,我們會設定一個參考距離,假設是15 公分。若是超音波偵測到的距離都是大於參考距離15 公分,表示障礙物距離遙遠,我們就下達前進指令。反之若是發現超音波的偵測距離小於參考距離,則下達閃避指令。

規劃好MoonCar 的移動模式後,我們就可以開始著手撰寫程式了,完整程式如下圖所示~遭遇到障礙物時,我們的閃避指令是採用左轉的方式。

將程式撰寫完畢後,就下載到micro:bit 裡並打開開關,試著用手遮擋MoonCar 並觀看是否閃避。

您當然也可以修改閃避的程式,可以設定為遇到障礙時,先停下來再執行閃避動作,如下圖:

或是先後退再執行閃避動作,透過暫停時間控制閃避多久,進而知道MoonCar 閃避後的大略方向,如下圖:

五、 micro:bit 登月小車總結:

這個單元教大家如何讓MoonCar 在探險時能閃避路上的障礙物,您當然也可以加上micro:bit 的5*5 LED 顯示,來製作出閃避時的表情。雖然就像本文中說的,會有雜點就是了。

下一個單元會教大家使用蜂鳴器,可不要小看這個單元喔!我們會結合感測器與燈光來玩互動式專案,我們下一個單元見!