學習目標
- 理解按鈕狀態邊緣
- 使用 on_enter/on_leave callback
- 持續接收 Runtime 按鈕事件
感測事件CHAPTERS
按下時印出 entered 並發聲,放開時印出 left;持續按住不應重複觸發進入事件。
保留程式與觀察紀錄,說明你修改了哪個部分,以及結果如何改變。
PROJECT PREVIEW

TRY IT
from mangobox import Mango
m = Mango(mode="hardware")
def entered():
print("Button entered: pressed")
m.beep()
def left():
print("Button left: released")
m.on_enter("button", entered)
m.on_leave("button", left)
m.start_button(100)
m.run_forever()
按下時印出 entered 並發聲,放開時印出 left;持續按住不應重複觸發進入事件。
下載本課 Python 範例 →執行前請核對所需設備與頁面下方的執行環境。程式只在桌面工具執行,這個網頁不執行 Python 或連接硬體。
ENVIRONMENT & VERSIONS
本課以 MangoX2 教學套件為基準。MangoLite 需另核對模組、Enable 與 LED 數量,本課尚未宣稱直接相容。
先用 Device Manager 確認模組啟用、GPIO 與連線;MangoX2 的 OLED、RGB 和按鈕屬套件模組,不能只看裸板名稱判定已備妥。Host UART 與原生 Pico USB 的用途不同。
已核對官方文件與 Host 原始碼;本課尚未完成實機驗證
on_enter/on_leave 是公開保留的相容事件名稱。本課明確以 button 為例,不能把任意類比感測器都當成相同的二元事件。
對照來源:Host Button reference;mangopython.py on_enter/on_leave
官方來源:MangoBox-Platform 公開 API 契約(2026-09-06)與 MangoThonny Host 原始碼 983cc296。本站範例為課程改寫,非逐字複製老師教材。
m.beep()bee() 的相容名稱m.on_enter(sensor, callback)數位狀態由 0 轉 1 時執行 callback;相容於 on_pressed()m.on_leave(sensor, callback)數位狀態由 1 轉 0 時執行 callback;相容於 on_released()m.start_button(period=100)啟動按鈕週期監看m.run_forever()Host:保持電腦程式存活以接收事件;不是 Pico Scheduler 迴圈。