from machine import Pin, PWM
import time
buzzer = PWM(Pin(25)) # 設定蜂鳴器腳位
# 定義音符頻率
C4 = 262
D4 = 294
E4 = 330
F4 = 349
G4 = 392
A4 = 440
B4 = 494
C5 = 523
# 旋律與節奏
melody = [
G4, G4, A4, G4, C5, B4, 0,
G4, G4, A4, G4, D5, C5, 0,
G4, G4, G5, E5, C5, B4, A4, 0,
F5, F5, E5, C5, D5, C5
]
beats = [
0.5, 0.5, 1, 1, 1, 2, 1,
0.5, 0.5, 1, 1, 1, 2, 1,
0.5, 0.5, 1, 1, 1, 1, 2, 1,
0.5, 0.5, 1, 1, 1, 2
]
beat_time = 0.3 # 每拍0.3秒
def play_note(freq, duration):
if freq == 0:
buzzer.duty(0)
else:
buzzer.freq(freq)
buzzer.duty(512)
time.sleep(duration)
buzzer.duty(0)
def play_melody():
for i in range(len(melody)):
play_note(melody[i], beats[i] * beat_time)
time.sleep(0.05)
while True:
play_melody()
time.sleep(2)
"""
【主要函數說明】
1. play_note(頻率, 時間):播放一個音符。
2. play_melody():依序播放整首旋律。
3. 0 代表休止符(不發聲)。
"""