搜尋

OLED 倒數計時器

這篇教學會使用 MakeCode 編輯 micro:bit 擴充板程式 ( EZ Start Kit+ ),透過 OLED 顯示器搭配按鈕開關、蜂鳴器、可變電阻,實作一個可以設定時間的倒數計時器

OLED 顯示倒數時間

倒數計時器的時間顯示格式,通常是以 00:00:00 來表示,如果要透過 OLED 來呈現,需要先將「數字」轉換成「文字」,接著在一位數的數字前方補零,就能做到同樣的效果,首先定義「啟動時」的一些變數,包含 h ( 時 )、m ( 分 )、s ( 秒 ) 和 start ( 是否開始,預設 -1 表示尚未開始 ) 以及 time ( 倒數計時的總秒數 )

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

新增 change 函式,加入數字參數 num,負責將一位數的數字前方補零。

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

change 函式內容放入邏輯判斷,判斷如果輸入的數字小於 10,就將前方補零並轉換成文字,如果大於等於 10,直接將數字轉換成文字

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

新增 show 函式,在第一列 ( x=0, y=0 ) 的位置顯示 H M S 的文字,在第二列顯示對應的時間,時間使用剛剛的 change 函式轉換數字為對應的文字

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

新增 count 函式,加入數字參數 num,負責計算增加或減少秒數後的時間。

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

編輯 count 函式:

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

回到「啟動時」積木,在最後方呼叫 count 函式,程式燒錄到 micro:bit 執行後,OLED 畫面就會出現 00:00:00 的文字。

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

使用按鈕開關和可變電阻,增加或減少時間

因為 EZ Start Kit 有可變電阻,所以能使用可變電阻進行秒數調整 ( 例如一次增加 1 秒或一次增加 300 秒 ),參考「OLED 顯示動態數字」文章,當調整可變電阻時,在 OLED 的右下角顯示可變電阻的數字,並將可變電阻的數字,以 10 為區間做變化 ( 最小值為 1 )

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

編輯按鈕 A 與按鈕 B 的程式,如果 start 小於 0 時 ( 尚未開始倒數 ) 按下按鈕 A,呼叫 count 函式,增加可變電阻調整的秒數,按下按鈕 B,呼叫 count 函式,減少可變電阻調整的秒數

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

將程式燒錄至 micro:bit 執行後,可以用可變電阻將左下角數值調整至 300,按下 A 按鈕,倒數的時間就會出現 00:05:00 ( 五分鐘 )。

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

倒數計時器

最後編輯倒數計時的程式:

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

完成後,就是一個非常完整的倒數計時器 ( 如果要將數字歸零,只要將可變電阻數值調整為最大,不斷按下 B 按鈕就可以歸零 )。

micro:bit 擴充板 ( EZ Start Kit+ ) - OLED 倒數計時器

範例解答

延伸練習

如果已經熟悉了 EZ Start Kit+ OLED 倒數計時器的原理,還可以嘗試更多好玩的作法:

  • 嘗試加入「貪睡機制」,例如時間到了之後,按下 A 按鈕可以多出一分鐘 ( 解答 )。

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

micro:bit 教學

基本介紹

關於 micro:bit micro:bit 硬體規格 micro:bit 開發方式 使用 MakeCode 開始控制 micro:bit

程式積木

基本 輸入 輸入 ( V2 ) 輸入 ( 更多 ) 音效 音效 ( V2 ) 燈光 燈光 ( 更多 ) 廣播 廣播 ( 更多 ) 迴圈 邏輯 變數 數學

進階積木

函式 陣列 文字 圖像 遊戲 引腳 引腳 ( 更多、V2 ) 控制 序列

擴展積木

超音波 ( 偵測距離 ) 溫濕度 伺服馬達 紅外線接收 紅外線發射 MAX7219 點矩陣 LCD1602 顯示器 OLED1306 顯示器 TM1637 七段顯示器

入門範例

跳動的心 簡單煙火動畫 倒數計時放煙火 剪刀石頭布 ( 按鈕 ) 搖骰子 一直向下的箭頭 指北針 長條圖顯示亮度 光影魔術手 愛心呼吸燈 按鈕秀文字 按鈕計數器 晃動計步器 顯示隨機圖案 空中傳愛 ( 廣播 ) 超時空跑馬燈 ( 廣播 ) 長條圖顯示音量 ( V2 ) 拍手換圖案 ( V2 ) 翻轉大黃蜂音效 ( V2 )

燈光範例

燈光繞圈 ( 座標 ) 燈光繞圈 ( 數字函式 ) 循環霹靂燈 依序點燈 ( 座標 ) 依序點燈 ( 數字函式 ) 隨機不重複的燈 按鈕依序開關燈 平衡燈 ( 姿勢 ) 平衡燈 ( 旋轉感測 ) 陣列點燈 ( 顯示圖形 ) 陣列點燈 ( 動畫 ) 移動速度不同的燈

遊戲範例

小瑪莉遊戲機 射擊幽浮 記憶大考驗 翻轉吃豆子 猴子接香蕉 老鼠走迷宮 吃角子老虎機 太鼓達人 貪吃蛇 心電感應 ( 廣播 )

電子元件範例

閃爍的 LED 燈 全彩 LED 光線變化 長條圖顯示土壤濕度 小夜燈 ( 光敏電阻 ) LED 顯示溫濕度 LCD1602 顯示溫濕度 超音波倒車雷達 七段顯示器顯示距離 人體紅外線偵測 旋鈕控制 LED 亮度 電流急急棒 OLED 繪製數學圖形 OLED 顯示手繪圖案 觸碰開燈 ( 引腳按下 ) 觸碰開燈 ( 類比訊號 ) 水果鋼琴 ( 類比訊號 )

MoonCar 自走車

MoonCar 教學導讀 關於 MoonCar 自走車 程式積木介紹 控制移動和轉彎 七彩魔幻 LED 超音波隔空推車 超音波倒車雷達 超音波隔空彈鋼琴 超音波自動避障 偵測和辨識顏色 辨識顏色+演奏音樂 辨識顏色+控制移動 紅外線遙控器控制移動 micro:bit 廣播遙控 趨光性自走車 指北車 ( 永遠轉向北方 ) 循跡自走車 循跡自走車+辨識顏色 聽到聲音就移動 ( V2 )

EZStartKit 擴充板

EZ Start Kit 教學導讀 關於 EZ Start Kit+ 程式積木介紹 LED 基本控制 LED + 按鈕開關 LED + 可變電阻 LED 光感應小夜燈 RGB LED 基本控制 RGB LED + 紅外線遙控器 OLED 顯示文字與數字 OLED 顯示動態數字 OLED 文字跑馬燈 OLED 繪製圖形 OLED 繪製正弦波圖形 OLED 倒數計時器 OLED 顯示手繪圖案 繼電器 + 紅外線遙控器