2026年9月3日 星期四

Python 程式實習:MakeCode Python 如何指揮 micro:bit 硬體?

Python 程式實習:MakeCode Python 如何指揮 micro:bit 硬體?

當我們寫下 radio.send_value("x", 35)cuteBot.motors(60, 60) 時,真正發生了什麼?本教材帶你理解:程式碼不是直接碰觸硬體,而是經過編譯、執行環境與硬體介面,最後才變成 LED、無線訊號、感測器讀值與馬達動作。

一、學習目標

  • 分辨 MakeCode Python、MicroPython 與電腦 IDLE Python 的差異。
  • 說明 MakeCode Python 從程式碼到 micro:bit 硬體動作的流程。
  • 理解事件驅動程式與一般由上而下執行程式的差別。
  • 能從 API 名稱推論其操作的硬體資源與通訊方式。

二、先釐清:它們不在同一個 Python 世界

環境主要用途程式在哪裡執行?
MakeCode Python以 Python 風格控制 micro:bit、Radio、馬達與感測器編譯後,在 micro:bit 上執行
IDLE Python檔案、資料分析、網頁、AI 與一般軟體開發電腦上的 CPython
MicroPython在微控制器上執行 Python 直譯器支援 MicroPython 韌體的微控制器

三者都有 ifforwhiledef 等共通語法;但可呼叫的函式庫、執行方式與目標硬體不同。MakeCode Python 的重點是「用接近 Python 的語法,使用 MakeCode 的硬體 API」。

三、從程式碼到硬體:中間經過了什麼?

MakeCode
Python
PXT 轉換
與編譯
.hex
機器碼
micro:bit
執行環境
LED、Radio、
腳位、I2C、馬達

你按下「下載」時,MakeCode 會將程式編譯成 micro:bit 的 ARM 處理器可執行的 .hex 檔。下載到開發板後,micro:bit 的執行環境才依序處理按鍵、時間、無線接收與硬體控制。

四、API 是硬體的翻譯字典

MakeCode Python它要做什麼?底層硬體資源
basic.show_number(51)在板子上顯示 515×5 LED 矩陣
radio.send_value("x", 35)送出 x 軸控制資料2.4 GHz 無線電
pins.digital_write_pin(...)輸出高、低電位GPIO 腳位
cuteBot.motors(60, 60)設定左右輪速度腳位或 I2C 與馬達驅動板

擴充功能的價值,是將複雜的電路與通訊細節包裝成可讀的 API。學生仍要理解:函式不是魔法,它是在請底層系統操作某項硬體資源。

五、MakeCode 為什麼常用事件?

在 IDLE 中,我們常把程式想成由上而下執行;但硬體系統必須隨時等候按鍵、無線資料或感測器變化,因此 MakeCode 常採用事件驅動。

def on_received_value(name, value):
    if name == "x":
        xValue = value

radio.on_received_value(on_received_value)

這段程式的意思不是「立刻執行一次後結束」,而是向執行環境登記:以後只要收到廣播鍵值,就呼叫這個函式。

相對地,basic.forever() 則適合放需要持續檢查的工作,例如馬達輸出、逾時判斷或感測距離。

六、程式實驗:觀察同一個概念在不同環境的差異

實驗 A:顯示與輸出

# MakeCode Python:對硬體說話
basic.show_number(51)

# IDLE Python:對終端機說話
print(51)

實驗 B:重複執行與逾時安全

def on_forever():
    if control.millis() - lastReceiveTime > 500:
        cuteBot.motors(0, 0)

basic.forever(on_forever)

請學生回答:這段程式為何要持續執行?若只檢查一次,斷線安全還有效嗎?

七、常見錯誤與除錯方法

現象可能原因檢查方式
IDLE 找不到 basic在錯誤環境執行 MakeCode API改回 MakeCode Python;或重寫為電腦版程式。
程式不能轉回積木某些 Python 寫法無法雙向轉換保留 Python 模式並檢查是否可編譯下載。
小車不動群組不同、未收到資料或安全條件成立先顯示群組、資料值與逾時計時。

八、挑戰任務:從硬體控制走向系統設計

  1. 為 Q霸小車新增一個「狀態回報」訊息,讓搖桿知道小車是否避障或斷線。
  2. 把遙控系統畫成資料流圖,標示程式、執行環境、無線傳輸與硬體輸出。
  3. 比較 MakeCode Python 與 IDLE Python:若要做「兒童館小車使用紀錄」應在哪一端執行?為什麼?
本課結論:MakeCode Python 讓我們用接近 Python 的方式撰寫硬體邏輯;編譯器與 micro:bit 執行環境則負責把這些指令變成真正的電氣訊號與裝置行為。理解這層關係,才能從「會寫積木」進階到「能設計可靠的智慧系統」。

沒有留言:

張貼留言