===== Эксперимент 22. Ноты =====
В музыке каждой ноте соответствует строго определенная частота, или как говорят музыканты — тон. Также у каждой ноты есть обозначение на нотном стане и буквенный код. Например тона Ля обозначается как A.
{{ :products:esp-iot:2020-05-18_12-02-06.png?nolink |}}
Не будем сильно вдаваться в музыкальную теорию так как это не является предметом нашего курса. Просто примем эти обозначения, соберем схему и составим программу для воспроизведения нот.
==== Схема эксперимента ====
{{ :products:esp-iot:exp7_sch.png?nolink |}}
//Рисунок 1. Электрическая принципиальная схема эксперимента//
{{ :wiki:exp7_mont.png?direct&600 |}}
//Рисунок 2. Монтажная схема эксперимента//
==== Программный код эксперимента ====
from machine import Pin, PWM
import time
_init()
tones = {
'c': 262,
'd': 294,
'e': 330,
'f': 349,
'g': 392,
'a': 440,
'b': 494,
'C': 523
}
speaker = PWM(Pin(15, Pin.OUT))
speaker.duty(512)
speaker.freq(tones['c'])
time.sleep(1)
speaker.freq(tones['f'])
time.sleep(1)
speaker.freq(tones['b'])
time.sleep(1)
speaker.duty(0)
Объявляем //словарь// ''tones'' для записи нот и значений их частоты. Словарь очень похож на массив, но вместо числовых индексов в нем используются имена элементов. В нашем случае это названия нот, а значения — их частота. Словарь объявляется с помощью фигурных скобок ''{}'', внутри которых следуют пары ''ключ : значение'', перечисленные через запятую.
Обращение к элементам словаря происходит аналогично элементам массива, но вместо индекса указывается имя элемента, ключ ''tones['c']''.
Приведенная программа проигрывает 3 ноты До, Фа и Си, каждую в течение секунды, после чего отключает звук и завершается.
[[https://foxford.ru/wiki/informatika/slovari-assotsiativnye-massivy-v-python|Подробнее о словарях в Python]]
==== Дополнительное задание ====
* Измени код программы, чтобы она играла мелодию из нескольких нот с разной длительностью.