Эксперимент 22. Ноты

В музыке каждой ноте соответствует строго определенная частота, или как говорят музыканты — тон. Также у каждой ноты есть обозначение на нотном стане и буквенный код. Например тона Ля обозначается как A.

Не будем сильно вдаваться в музыкальную теорию так как это не является предметом нашего курса. Просто примем эти обозначения, соберем схему и составим программу для воспроизведения нот.

Схема эксперимента

Рисунок 1. Электрическая принципиальная схема эксперимента

Рисунок 2. Монтажная схема эксперимента

Программный код эксперимента

Exp22.py
  1. from machine import Pin, PWM
  2. import time
  3. _init()
  4.  
  5. tones = {
  6. 'c': 262,
  7. 'd': 294,
  8. 'e': 330,
  9. 'f': 349,
  10. 'g': 392,
  11. 'a': 440,
  12. 'b': 494,
  13. 'C': 523
  14. }
  15.  
  16. speaker = PWM(Pin(15, Pin.OUT))
  17.  
  18. speaker.duty(512)
  19.  
  20. speaker.freq(tones['c'])
  21. time.sleep(1)
  22. speaker.freq(tones['f'])
  23. time.sleep(1)
  24. speaker.freq(tones['b'])
  25. time.sleep(1)
  26.  
  27. speaker.duty(0)

Объявляем словарь tones для записи нот и значений их частоты. Словарь очень похож на массив, но вместо числовых индексов в нем используются имена элементов. В нашем случае это названия нот, а значения — их частота. Словарь объявляется с помощью фигурных скобок {}, внутри которых следуют пары ключ : значение, перечисленные через запятую.

Обращение к элементам словаря происходит аналогично элементам массива, но вместо индекса указывается имя элемента, ключ tones['c'].

Приведенная программа проигрывает 3 ноты До, Фа и Си, каждую в течение секунды, после чего отключает звук и завершается.

Дополнительное задание

  • Измени код программы, чтобы она играла мелодию из нескольких нот с разной длительностью.