micro:bit 自走車登月計畫 – 單元(六) 訊息感知-蜂鳴器

MoonCar 系列文章

這個單元將教大家使用蜂鳴器,您可能會想說蜂鳴器其實相當簡單,有必要單獨拉出來討論嗎?有的~不過我們不是教大家如何讓它發出悅耳的音樂,而是用它來輸出訊息,關於"檢查"這件事。

在執行程式的過程中難免會遇到問題,像是邏輯沒有寫好或是感測器有問題,總會有出乎預料的狀況發生。我們可以透過序列這個功能,將我們感測器的讀值印出來,以便知道是否是硬體的問題。

例如下圖:

邏輯問題可以在執行的過程中讓它印出執行到哪個段落,以便知道出錯的是哪個部分。

例如下圖:

但是序列這個功能需要將Micro USB 連接在micro:bit 上,若是要讓MoonCar 移動時會不適合,而micro:bit 正面的LED 矩陣雖然可以替代這個部份,但若是遇到需要顯示表情或圖案時,則會被我們的訊息中斷。這時候蜂鳴器就相當適合,可以透過音色或是發出的短音數量,來告訴我們程式執行到什麼部份。

一、 蜂鳴器小知識:

首先要先知道蜂鳴器該如何使用,如果您已經會使用則請跳過這個部份,這邊會簡單的教學使用方式。

在MakeCode 的程式列表中有一個"音效",點開音效可以看到我們能透過程式演奏一些聲音。

例如我們能讓MoonCar 在啟動時發出Do Re Mi 的聲音,並決定聲音要發出多久,告訴我們它已經準備好。如下圖:

或是可以讓它發出旋律並顯示圖案,如下圖所示:

二、 micor:bit 登月小車程式撰寫:

大家都知道如何使用蜂鳴器了對吧~我們可以將剛才用超音波示範邏輯的程式,修改如下圖這樣:

當有物體靠近時,MoonCar 會持續發出3 短音的警示聲,反之則沒有。

接下來我們透過micro:bit 的光感測與剛剛學到的蜂鳴器來製作互動式主題吧! micro:bit 的光感測器是利用LED偵測環境光線,有關教學與說明可以參考micro:bit 官方教學文章。

這個互動式主題除了需要知道光感測器如何使用外,還需要一個手電筒,您可以使用智慧型手機的手電筒功能,主要是用來照射光感測器。

主題是這樣的: 當被手電筒非常靠近照射時,MoonCar 會因為光線太強而後退,而當手電筒距離較遠用微弱光線照射時,MoonCar 則為了照射到適當的光線而往前走。若在適當光線照射下或毫無光線時,MoonCar 會靜止並發出聲音提示。

讓我們一步步來完成吧!首先我們需要知道手電筒照射的強度,我們可以透過序列來檢視目前光感測的數值,程式撰寫如下圖:

發現最靠近時數值為255 完全沒有時為0 ,稍微測試了一下決定使用15~200 作為適當光線範圍,也就是低於15 但不為0 時MoonCar 會前進,接收到高於200 的光線時MoonCar 會退後,若是在是當光線內或接收到完全無光的0 時,MoonCar 停止。程式撰寫如下:

接下來加上靜止時發出的提示聲音,如下圖所示:

因為程式太長,所以特別拉了一個函式將它包起來,變數on 的作用在於紀錄是否已經發出提示聲。我們希望靜止時只發出一次,若沒有使用變數去檢查,則會不停發出聲音。

三、 micor:bit 登月小車 總結:

這個單元教大家如何使用蜂鳴器做為檢測訊號,並製作了一個互動式小專案,大家是否有成功呢?關於適當的光線範圍您可以自己調整,以便讓MoonCar 移動的更順暢,下個單元將教大家使用紅外線遙控器操控MoonCar,並使用MoonCar 自己的紅外線發射器與其他MoonCar 溝通,下個單元見~