Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp23 [2024/12/03 21:27] – [Программный код эксперимента] labuser30products:laboratory_iot_c:exp23 [2024/12/03 21:32] (текущий) – [Программный код эксперимента] labuser30
Строка 62: Строка 62:
  
 <code arduino [enable_line_numbers="2", start_line_numbers_at="14"]> <code arduino [enable_line_numbers="2", start_line_numbers_at="14"]>
-Sound melody[8] = {{a, 8}, {b, 2}, {c, 1}, {d, 8}, {e, 3}, {f, 4}, {g, 6}, {C, 8}}; +Sound melody[8] = {{a, 8}, {b, 2}, {c, 1}, {d, 8}, {e, 3}, {f, 4},  
-}; +{g, 6}, {C, 8}};
 </code> </code>
  
- +С помощью цикла ''for'' проходим по всем элементам мелодии. Обращение к внутренней переменной типа ''struct'' производится с помощью ''.'' и ее имени.  
- +
-С помощью цикла ''for'' и оператора ''in'' проходим по всем элементам мелодии. Для этого мы использовали оператор ''zip''. Он нужен для одновременного перебора сразу двух массивов и получения их элементов в переменные ''tone'' и ''length''. Так на первой итерации в переменной ''tone'' окажется ''a'', а в ''length'' — ''8''. На второй итерации ''b'' и ''2'' соответственно+
- +
-Здесь внимательный читатель заметит, что ''melody'' не является массивом, а является строкойПочему же мы говорим о ней как о массиве и работаем как с массивом. Оказывается в Python любую строку можно представить как массив символов и обращаться к ним по индексу, что мы и делаем.+
  
 Получив ноту и ее длительность настраиваем частоту и скважность. Нота начинает звучать: Получив ноту и ее длительность настраиваем частоту и скважность. Нота начинает звучать:
-<code python [enable_line_numbers="2", start_line_numbers_at="24"]> +<code arduino [enable_line_numbers="2", start_line_numbers_at="24"]> 
-    speaker.duty(512) +    analogWrite(SPEAKER_PIN, 512); 
-    speaker.freq(tones[tone])+    analogWriteFreq(tones[melody[i].note]);
 </code> </code>
  
 Нота звучит, пока мы ждем время, равное ее длительности. В расчете учитывается темп: Нота звучит, пока мы ждем время, равное ее длительности. В расчете учитывается темп:
-<code python [enable_line_numbers="2", start_line_numbers_at="26"]> +<code arduino [enable_line_numbers="2", start_line_numbers_at="26"]> 
-    time.sleep(tempo/length)+    delay(tempo / melody[i].length);
 </code> </code>
  
 Чтобы ноты не сливались, мы делаем между ними маленькие паузы. Паузы между нотами также зависят от темпа и длительности ноты, но в 4 раза короче. Чтобы ноты не сливались, мы делаем между ними маленькие паузы. Паузы между нотами также зависят от темпа и длительности ноты, но в 4 раза короче.
-<code python [enable_line_numbers="2", start_line_numbers_at="27"]> +<code arduino [enable_line_numbers="2", start_line_numbers_at="27"]> 
-    speaker.duty(0) +    analogWrite(SPEAKER_PIN, 0); 
-    time.sleep(tempo/length/4)+    delay(tempo / melody[i].length / 4);
 </code> </code>