import time
from machine import Pin, PWM
# 定义无源蜂鸣器 PWM 控制对象
pos_buzzer = PWM(Pin(23, Pin.OUT))
# 定义《花海》简谱音符的频率(单位:Hz)
melody = [
329, 329, 293, 261, 261, 261, 293, # 13332123
329, 329, 293, 261, 261, 261, 349, # 1334351
349, 349, 349, 349, 261, 293, 329, # 14443123
329, 293, 261, 329, 293, 261, 329, # 132132132
329, 329, 293, 261, 261, 261, 293, # 13332123
329, 329, 293, 261, 261, 261, 349, # 1334351
349, 349, 349, 349, 261, 293, 349, 0, # 144431535(1)
392, 261, 349, 0, # 54411《7》1
261, 392, 392, 392, 392, # 12355
293, 293, 293, 293, # 32123
261, 0, # 1237(1)
0, 349, 392, 392, 392, # (1)765665
261, 261, 349, 0, # 12355
261, 293, 261, 0, # 32121
261, 349, 349, 261, 349, 0, # 12355443(1)332
]
# 每个音符的持续时间(单位:毫秒)
note_durations = [
400, 400, 400, 400, 400, 400, # 静止了所有的花开
400, 400, 400, 400, 600, # 遥远了清晰了爱
400, 400, 400, 400, 400, # 天郁闷爱却很喜欢
400, 400, 400, 400, 400, # 那时候我不懂这叫爱
400, 400, 400, 400, 400, # 你喜欢站在那窗台
400, 400, 400, 400, 600, # 你好久都没再来
400, 400, 400, 400, 600, # 彩色的时间染上空白
400, 400, # 是你流的泪晕开
400, 400, # 不要你离开
400, 400, # 距离隔不开
400, 600, # 思念变成海
600, 400, # 在窗外进不来
400, 400, # 原谅说太快
400, 400, # 爱成了阻碍
400, 400, 400, 600, # 手中的风筝放太快回不来
]
def play_melody():
"""播放《花海》旋律"""
for i in range(len(melody)):
pos_buzzer.freq(melody[i]) # 设置蜂鸣器频率
pos_buzzer.duty(512) # 开始发声
time.sleep_ms(note_durations[i]) # 按音符持续时间播放
pos_buzzer.duty(0) # 停顿音符
time.sleep_ms(100) # 间隔100毫秒
# 主循环
while True:
play_melody()
time.sleep(1000) # 每次播放完旋律,停顿1秒再循环播放