控制積木
micro:bit 的控制積木可以在開發板發生特定事情時發出「事件通知」,並針對這些事件進行控制,例如,按鈕按下可以發送按下事件,引腳被觸發可以發送觸碰事件,甚至可以將迴圈放入背景執行,實現許多進階的特殊效果。
控制積木有幾個分類:背景運行、等待、事件來源、事件結果 ( 數值 )、引發事件、等待事件、當事件發生、事件時間戳記、事件結果、重置、毫秒、裝置名稱、裝置序號。
背景運行
「背景運行」積木可以讓要運行的程式,進入背景執行,不受其他程式的影響。
下圖的例子,左邊基本的寫法,只能讓「先讓愛心動畫閃爍五次,之後才播放聲音五次」,若改成背景運行的做法,則可以讓愛心動畫與聲音「同時出現」,閃爍並播放五次後一起停止。
等待
「等待」積木可以將程式暫停 ( 等待 ) 指定的時間,時間過後再接續進行下方程式,單位是微秒 ( 1/1000000 秒或 1/1000 毫秒 )。
注意,等待積木只能使用於「實體」micro:bit,無法在模擬器展示。
下圖的例子,micro:bit 啟動後,正中間的 LED 燈會以 1000000 微秒 ( 1 秒 ) 的頻率閃爍四次。
事件來源
「事件來源」積木表示預設事件來源的名稱,如果不想要使用預設名稱,可以用「變數」或「數字」重新定義。
預設的「來源」有以下幾種 ( MES 開頭為外接裝置,不在此處列出 ):
預設來源 | 說明 |
---|---|
MIRCOBIT_ID_BUTTON_A | A 按鈕 |
MIRCOBIT_ID_BUTTON_B | B 按鈕 |
MIRCOBIT_ID_BUTTON_AB | A 按鈕和 B 按鈕 |
MIRCOBIT_ID_RADIO | 廣播 |
MIRCOBIT_ID_GESTURE | 手勢動作 |
MIRCOBIT_ID_ACCELEROMETER | 加速度計 |
MIRCOBIT_ID_IO_P0~P20 | P0~P20 的引腳 |
事件結果 ( 數值 )
「事件結果 ( 數值 )」積木表示預設事件要回傳的「數值」,如果不想要使用預設數值,可以用「變數」或「數字」重新定義。
預設的「數值」有以下幾種 ( MES 開頭為外接裝置,不在此處列出 ):
預設數值 | 說明 |
---|---|
MIRCOBIT_EVT_ANY | 任何事件 |
MIRCOBIT_BUTTON_EVT_DOWN | 按鈕按下 |
MIRCOBIT_BUTTON_EVT_UP | 按鈕放開 |
MIRCOBIT_BUTTON_EVT_CLICK | 按鈕按壓 |
MICROBIT_RADIO_EVT_DATAGRAM | 收到廣播數據 |
MICROBIT_ACCELEROMETER_EVT_DATA_UPDATE | 加速度資料更新 |
MICROBIT_PIN_EVT_RISE | 引腳訊號提升 |
MICROBIT_PIN_EVT_FALL | 引腳訊號降低 |
MICROBIT_PIN_EVT_PULSE_HI | 引腳脈衝高 |
MICROBIT_PIN_EVT_PULSE_LO | 引腳脈衝低 |
引發事件
「引發事件」積木可以針對指定的「來源」引發事件,並產生一個事件的「數值」,當「偵測到特定事件又滿足指定數值」,就可以觸發特定的程式內容。
引發事件的「來源」和「數值」可以使用預設值,也可以使用變數或數字,引發事件後,會透過「等待事件」或「當事件發生」來獲取事件,進一步完成後續程式內容。
注意!因為事件來源的數字往往介於 0~9 之間,所以如果是用變數或數字自訂,盡量避開這些數字,避免自訂數值和預設值互相影響造成程式錯誤。
等待事件
「等待事件」積木可以讓程式暫停,直到接收到特定事件後,才會接續進行程式內容。
下圖的例子,重複無限次積木裡先放上「等待事件」積木,等待事件積木後方有顯示愛心的積木,micro:bit 啟動後,並不會顯示愛心圖示,直到按下 A 按鈕,發送事件之後,才會顯示愛心圖示。
當事件發生
「當事件發生」積木可以不斷偵測事件來源,直到偵測到特定事件數值,就會執行內容程式。
下圖的例子,第一個「當事件發生」積木是偵測「按下 A 按鈕」事件發生時,顯示愛心圖案,第二個「當事件發生」積木是偵測「放開 A 按鈕」事件發生時,清除螢幕。
事件時間戳記
「當事件發生」積木可以顯示事件發生當下的時間,單位是微秒 ( 1/1000000 秒 )。
事件結果
「事件結果」積木可以顯示偵測到事件的結果數值。
重置
「重置」積木可以將 micro:bit 重新啟動。
毫秒
「毫秒」積木可以顯示 micro:bit 啟動後到目前的時間,單位是毫秒 ( 1/1000 秒 )。
裝置名稱
「裝置名稱」積木可以顯示 micro:bit 的裝置名稱。
裝置序號
「裝置序號」積木可以顯示 micro:bit 的裝置序號。
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~