Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot:exp24 [2020/05/17 12:52] – [Дополнительное задание] labuser29products:laboratory_iot:exp24 [2020/05/18 15:41] (текущий) – [Программный код эксперимента] labuser29
Строка 1: Строка 1:
-==== Программный код эксперимента ====+===== Эксперимент 24. Музыкальный автомат =====
  
-<file python Exp24.py[enable_line_numbers="​2",​ start_line_numbers_at="​1"]>​+Теперь создадим настоящий музыкальный автоматМы подготовим для него запись мелодии, а он будет ее воспроизводить. Возьмем всем известную мелодию "В лесу родилась ёлочка" 
 + 
 +{{ :products:esp-iot:v_lesu_rodilas_jolochka7.png?nolink |}} 
 +//Рисунок 1. Ноты мелодии "В лесу родилась ёлочка"// 
 + 
 +Если ты не разбираешься в музыкальной грамотето не беда. Эксперимент получится и без этого, ведь мы уже перевели эту нотную запись в "языкдля нашего музыкального автомата. Но если тебе интересно, и ты хочешь сделать запись другой мелодии, то [[https://soundtimes.ru/uroki-muzyki/notnaya-gramota-dlya-nachinayushchikh-muzykantov|начать знакомство с нотной грамотностью можно, например, здесь]].
  
-<​file> 
  
 ==== Схема эксперимента ==== ==== Схема эксперимента ====
Строка 10: Строка 14:
 //Рисунок 1. Электрическая принципиальная схема эксперимента// //Рисунок 1. Электрическая принципиальная схема эксперимента//
  
-Сигнал от ШИМ генератора подается на базу транзистора VT1Сигнал подается через резистор R1, чтобы уменьшить ток базыТранзистору не нужен большой управляющий ток. Когда на базу транзистора попадает сигнал логической единицы — транзистор открывается и сопротивление перехода Коллектор-Эмиттер сильно падает. Ток начинает протекать через динамик SP1. Резистор R2 необходим как ограничитель тока через динамик так как последний обладает маленьким сопротивлением, и без дополнительного резистора большой ток испортит динамик.+{{ :wiki:exp7_mont.png?direct&600 |}} 
 +//Рисунок 2Монтажная схема эксперимента//
  
-<WRAP center round alert 60%> +==== Программный код эксперимента ==== 
-Токоограничительный резистор R2 необходим, чтобы динамик не сгорел. Однако, его номинал можно уменьшить, чтобы увеличить громкость звука. Если параллельно резистору 120 Ом подключить еще один такой же, то общее их сопротивление уменьшится в разадо 60 Ома громкость звука увеличится. +<file python Exp24.py[enable_line_numbers="2"start_line_numbers_at="1"]> 
-</WRAP>+from machine import PinPWM 
 +import time 
 +_init()
  
 +tempo = 2
  
-{:wiki:exp7_mont.png?direct&600 |}} +tones = { 
-//Рисунок 2. Монтажная схема эксперимента//+    'c'262, 
 +    'd'294, 
 +    'e': 330, 
 +    'f': 349, 
 +    'g': 392, 
 +    'a': 440, 
 +    'b': 494, 
 +    'C': 523 
 +}
  
 +speaker = PWM(Pin(15, Pin.OUT))
 +
 +melody = 'caagafcccaabgCCddbbagfcaagafCddbbagfcaagaf'
 +rhythm = [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 
 +8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3, 2]
 +
 +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)
 +</file>
 +
 +В перменной ''melody'' записаны ноты мелодии, а в массиве ''rhythm'' их длительности.
 ==== Дополнительное задание ==== ==== Дополнительное задание ====
 <WRAP center round tip 60%> <WRAP center round tip 60%>
   * Попробуй записать и воспроизвести другую мелодию,​ например "В траве сидел кузнечик"   * Попробуй записать и воспроизвести другую мелодию,​ например "В траве сидел кузнечик"
-</WRAP>+</WRAP> 
 +