Это старая версия документа!
Если в прошлом эксперименте ты попробовал выполнить дополнительное задание и записать мелодию, то, вероятно, понял, что это не просто, учитывая, что нужно описывать и ноты и их длительности и паузы между ними. А если после написания такой мелодии потребуется изменить ее темп, то придется пересчитывать все паузы. Должен быть другой, более удобный способ записывать мелодии.
Для этого запишем мелодию, последовательность ее нот, в массив, а длительности этих нот в другой. С помощью оператора цикла будем получать эти данные и исполнять. Для записи темпа заведем отдельную переменную, которая будет учитываться в расчете длительностей.
Схему эксперимента оставим прежней, займемся программой.
Рисунок 1. Электрическая принципиальная схема эксперимента
from machine import Pin, PWM import time _init() tempo = 2 tones = { 'c': 262, 'd': 294, 'e': 330, 'f': 349, 'g': 392, 'a': 440, 'b': 494, 'C': 523 } speaker = PWM(Pin(15, Pin.OUT)) melody = 'abcdefgC' rhythm = [8, 2, 1, 8, 3, 4, 6, 8] for tone, length in zip(melody, rhythm): speaker.duty(512) speaker.freq(tones[tone]) time.sleep(tempo/length) speaker.duty(0) time.sleep(tempo/length/4)