Seeed Xiao Esp32-S3 && MicroPython && Expansion Board && 擴充板的無源蜂鳴器

需要的材料

認識 Seeeduino XIAO Expansion Board擴充板

在開始撰寫程式之前,先來認識這塊擴充板。

操作示意圖

EB02-PassiveBuzzer

正面圖

Seeeduino XIAO Expansion Board擴充板正面

背面圖

Seeeduino XIAO Expansion Board擴充板背面

腳位圖

Seeeduino XIAO Expansion Board擴充板腳位圖
圖片來源: Seeed Studio 官方文件

開啟 Thonny 並執行範例程式

PassiveBuzzer.py

from machine import Pin, PWM
import time

# =====================
# 設定無源蜂鳴器腳位
# =====================
# Expansion Board 上的無源蜂鳴器(GPIO4)
buzzer = PWM(Pin(4))

# =====================
# 定義音符頻率(Hz)
# =====================
Do  = 262     # C
Re  = 294     # D
Mi  = 330     # E
Fa  = 349     # F
So  = 392     # G
La  = 440     # A
Si  = 494     # B
Do2 = 523     # 高音 Do
REST = 0      # 休止符(不發聲)

# =====================
# 播放單一音符的函式
# =====================
def play(note, duration):
    if note == REST:
        buzzer.duty(0)          # 休止(不發聲)
    else:
        buzzer.freq(note)       # 設定 PWM 頻率
        buzzer.duty(512)        # 約 50% 占空比(音量適中)

    time.sleep(duration)        # 音符持續時間
    buzzer.duty(0)              # 音符結束,關閉輸出
    time.sleep(0.02)            # 音符間短暫間隔

# =====================
# 《少女的祈禱》簡化旋律
# =====================
song = [
    Mi, So, La, So, Mi, Re,
    Mi, So, La, So, Mi, Re,
    Mi, So, La, Do2, La, So,
    Mi, Re, Do, REST,

    Mi, So, La, So, Mi, Re,
    Mi, So, La, So, Mi, Re,
    Mi, So, La, Do2, La, So,
    Mi, Re, Do
]

# =====================
# 播放旋律
# =====================
for note in song:
    play(note, 0.35)

# 播放完畢後關閉 PWM
buzzer.deinit()

⚠ 注意事項

▶ 執行結果

蜂鳴器會依序播放旋律音符,完成後自動停止發聲。

🔗 相關連結