import time
from machine import Pin, PWM
# Пин, к которому подключен пьезоизлучатель (buzzer)
buzzer_pin = Pin(14, Pin.OUT)
# Частоты нот для мелодии Megalovania (можно настроить по желанию)
note_freqs = {
'C4': 261,
'C#4': 277,
'D4': 294,
'D#4': 311,
'E4': 330,
'F4': 349,
'F#4': 370,
'G4': 392,
'G#4': 415,
'A4': 440,
'A#4': 466,
'B4': 494,
'C5': 523,
'C#5': 554,
'D5': 587,
'D#5': 622,
'E5': 659,
'F5': 698,
'F#5': 740,
'G5': 784,
'G#5': 831,
'A5': 880,
'A#5': 932,
'B5': 988,
'C6': 1047,
'C#6': 1109,
'D6': 1175,
'D#6': 1245,
'E6': 1319,
'F6': 1397,
'F#6': 1480,
'G6': 1568,
'G#6': 1661,
'A6': 1760,
'A#6': 1865,
'B6': 1976
}
# Длительность каждой ноты в миллисекундах
note_durations = {
'whole': 2000,
'half': 1000,
'quarter': 500,
'eighth': 250,
'sixteenth': 125
}
# Функция для воспроизведения ноты
def play_note(note, duration):
pwm = PWM(buzzer_pin)
pwm.freq(int(note_freqs[note]))
pwm.duty(512) # Задать среднее значение дутей для "чистого" звука
time.sleep_ms(duration)
pwm.deinit() # Отключить пьезоизлучатель после окончания звучания
# Мелодия Megalovania в виде последовательности нот и их длительностей
melody = [
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('C5', 'quarter'), ('B4', 'quarter'), ('A4', 'half'),
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('A4', 'eighth'), ('C5', 'eighth'), ('D5', 'quarter'),
('C5', 'quarter'), ('B4', 'quarter'), ('A4', 'half')
]
# Воспроизведение мелодии
for note, duration in melody:
play_note(note, note_durations[duration])
time.sleep_ms(50) # Пауза между нотами для четкости звучания