🥭MangoBox
回課程列表
按鈕事件與 LED 互動事件互動

COURSE DETAIL

按鈕事件與 LED 互動

透過 callback 監聽按鈕,讓每次操作都觸發不同燈色與提示聲。

預估時間150 分鐘適用能力完成 Python 基礎課程
查看課程章節

CHAPTERS

課程章節

依序閱讀、操作,再用完成檢查確認自己的學習成果。
  1. 01
    CHAPTER 1

    事件驅動程式概念

    畫出按下、放開與輸出變化的關係,分清楚事件與持續讀取的差別。

    確認學習目標與設備 →
  2. 02
    CHAPTER 2

    建立 pressed callback

    閱讀 pressed 與 released 函式,找出各自負責的 LED 與蜂鳴器動作。

    對照本課完整程式 →
  3. 03
    CHAPTER 3

    啟動 Button 回報

    對照 when_pressed、when_released 與 start_button,確認 Button 模組啟用後再執行。

    對照本課完整程式 →
  4. 04
    CHAPTER 4

    持續監聽與結束程式

    反覆按下與放開,確認橘色亮燈、提示音與熄燈行為;使用 Ctrl+C 結束。

    對照本課完整程式 →

完成檢查

按下按鈕時全部 RGB 亮橘色並發聲,放開時熄滅。

保留程式與觀察紀錄,說明你修改了哪個部分,以及結果如何改變。

學習目標

  • 註冊 when_pressed callback
  • 用 start_button(100) 啟動按鈕回報
  • 組合 RGB LED 與蜂鳴器輸出

所需設備

  • Windows 電腦
  • MangoThonny v0.4.0(Host Student API v0.4.6)
  • MangoX2 + Pico/Pico W/Pico 2 W
  • MangoX2 Runtime v0.2.6
  • USB 資料線、Host UART 所需 USB-to-TTL 連線
  • Button 模組(已啟用)
  • 八顆 RGB LED 教學模組(已啟用,index 0–7)
  • MangoX2 板載蜂鳴器

PROJECT PREVIEW

課程成果預覽

按鈕控制 LED 的互動裝置按下按鈕時全部 RGB 亮橘色並發聲,放開時熄滅。
本課使用的 Mango X2 開發板

TRY IT

程式與實作

程式需在 MangoThonny 的 Host / CPython 執行;本頁提供閱讀與 RGB 燈效示意。
main.py
from mangobox import Mango

m = Mango(mode="hardware")
def pressed():
    m.led_all("#FF7A00")
    m.beep()

def released():
    m.led_off()

m.when_pressed("button", pressed)
m.when_released("button", released)
m.start_button(100)  # Runtime 回報間隔,毫秒
m.run_forever()      # Host 程式等待事件;Ctrl+C 結束

在 MangoThonny 執行

按下按鈕時全部 RGB 亮橘色並發聲,放開時熄滅。

下載本課 Python 範例 →

執行前請核對所需設備與頁面下方的執行環境。程式只在桌面工具執行,這個網頁不執行 Python 或連接硬體。

ENVIRONMENT & VERSIONS

本課執行環境與版本

執行方式
Host / CPython · hardware(程式在 Windows 電腦執行)
工具與韌體
MangoThonny v0.4.0 · Host Student API v0.4.6 · MangoX2 Runtime v0.2.6
適用硬體
MangoX2 + Pico/Pico W/Pico 2 W;依課程所需模組設定

本課以 MangoX2 教學套件為基準。MangoLite 需另核對模組、Enable 與 LED 數量,本課尚未宣稱直接相容。

先用 Device Manager 確認模組啟用、GPIO 與連線;MangoX2 的 OLED、RGB 和按鈕屬套件模組,不能只看裸板名稱判定已備妥。Host UART 與原生 Pico USB 的用途不同。

本課 API 核對紀錄 · 2026-09-09

已核對官方文件與 Host 原始碼;本課尚未完成實機驗證

使用 start_button() 對應 Button,避免教材混用 button 與底層 cap_touch 名稱。Host callback 不接收必要參數;run_forever() 保持電腦程式存活。

對照來源:HostPython/05-MangoX2-Button_LED.py

官方來源:MangoBox-Platform 公開 API 契約(2026-09-06)與 MangoThonny Host 原始碼 983cc296。本站範例為課程改寫,非逐字複製老師教材。

  • m.led_all(color="#ffffff", duration=0, strip=None)設定全部 RGB LED 為同一顏色
  • m.beep()bee() 的相容名稱
  • m.led_off(strip=None)停止 LED 燈效並熄滅燈條
  • m.when_pressed(sensor='button', callback=None)註冊按下事件的便利寫法
  • m.when_released(sensor='button', callback=None)註冊放開事件的便利寫法
  • m.start_button(period=100)啟動按鈕週期監看
  • m.run_forever()Host:保持電腦程式存活以接收事件;不是 Pico Scheduler 迴圈。