用 micro:bit Python Editor 學習真正的 MicroPython:從 LED、按鍵到無線互動
當你已經用 MakeCode 讓 micro:bit 動起來,下一步可以改用 micro:bit Python Editor。它採用 MicroPython,程式結構更接近一般 Python;學生能保留硬體實作的即時回饋,同時學習 import、while True、函式、序列輸出與模組化程式。
建議對象:具備 MakeCode 基礎、準備進入文字型 Python 程式設計的學生。
一、為什麼要學 micro:bit Python Editor?
| 學習階段 | 你會學到什麼? |
|---|---|
| MakeCode 積木 | 程式邏輯、事件、硬體輸入與輸出 |
| MakeCode Python | Python 風格的硬體控制與程式結構 |
| micro:bit Python Editor | MicroPython 的 import、while True、除錯主控台與模組 |
| IDLE Python | 檔案、資料分析、API、AI 與完整應用程式 |
micro:bit Python Editor 有模擬器、語法提示、錯誤標示與序列主控台。先在模擬器測試,再傳送到實體 micro:bit,可以降低初次接觸文字程式的挫折感。
二、第一行程式:匯入 micro:bit 工具箱
from microbit import *
這行程式把 micro:bit 的 LED、按鍵、溫度、加速度、腳位與時間功能載入。目前的程式可以使用 display、button_a、sleep() 等名稱。
三、範例 1:讓 LED 顯示愛心
from microbit import *
display.show(Image.HEART)
sleep(1000)
display.clear()
練習:把 Image.HEART 改成 Image.HAPPY、Image.SAD 或自己建立 5×5 圖案。
四、範例 2:按 A 顯示 A,按 B 顯示 B
from microbit import *
while True:
if button_a.was_pressed():
display.show('A')
if button_b.was_pressed():
display.show('B')
while True: 表示「永遠重複」。程式不是一直盯著按鍵不放,而是持續檢查是否發生「按過一次」的事件。
五、範例 3:搖一搖,顯示隨機點數
from microbit import *
from random import randint
while True:
if accelerometer.was_gesture('shake'):
number = randint(1, 6)
display.show(str(number))
sleep(800)
這個例子同時練習:感測器、條件判斷、變數、隨機數與字串轉換。
六、範例 4:溫度計與序列主控台
from microbit import *
while True:
celsius = temperature()
display.scroll(str(celsius) + 'C')
print(celsius)
sleep(2000)
display.scroll() 是給板子上的人看;print() 則會輸出到 Python Editor 的序列主控台,適合觀察資料是否合理、協助除錯。
七、範例 5:兩片 micro:bit 無線傳話
請用兩片 micro:bit,兩端都下載下列程式。按下 A 就送出訊息;接收端會顯示收到的內容。
from microbit import *
import radio
radio.on()
radio.config(group=23)
while True:
if button_a.was_pressed():
radio.send('Hello')
display.show(Image.HAPPY)
message = radio.receive()
if message:
display.scroll(message)
重點:兩片 micro:bit 的 group 必須相同,才像在同一個無線頻道。請改成不同組別測試,觀察訊息是否還能收到。
八、從 MakeCode Python 搬家時,不能直接複製的地方
| MakeCode Python | micro:bit MicroPython |
|---|---|
basic.show_number(51) | display.show('5') 或 display.scroll('51') |
basic.forever(...) | while True: |
radio.send_value() | radio.send()、radio.receive() |
兩者都是 Python,但 API 不同。若要控制 CuteBot、Joystick:bit 等擴充硬體,必須使用廠商提供、可在 MicroPython 使用的模組;MakeCode 的擴充功能不能直接複製過來。
九、課堂任務:微型智慧環境站
- 顯示目前溫度;當溫度高於自訂門檻時顯示警示圖案。
- 按 A 顯示目前溫度,按 B 顯示光線值。
- 每 5 秒用 Radio 傳送一行格式化資料,例如
T=28,L=120。 - 另一片 micro:bit 收到資料後顯示圖示,並在序列主控台列印收到的原始訊息。
十、學習檢核
- 我能說明
from microbit import *的用途。 - 我能用
while True撰寫持續運作的程式。 - 我能用序列主控台檢查
print()輸出的資料。 - 我能設定兩片 micro:bit 使用相同的 Radio 群組並互相傳訊息。
- 我知道 MakeCode Python 與 MicroPython 的語法相似,但 API 不可直接混用。
沒有留言:
張貼留言