在開始撰寫程式之前,先來認識這塊擴充板。
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()
蜂鳴器會依序播放旋律音符,完成後自動停止發聲。