Эксперимент 24. Музыкальный автомат

Теперь создадим настоящий музыкальный автомат. Мы подготовим для него запись мелодии, а он будет ее воспроизводить. Возьмем всем известную мелодию «В лесу родилась ёлочка»

Рисунок 1. Ноты мелодии «В лесу родилась ёлочка»

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

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

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

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

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

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

В перменной melody записаны ноты мелодии, а в массиве rhythm их длительности.

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

  • Попробуй записать и воспроизвести другую мелодию,​ например «В траве сидел кузнечик»​