Различия

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

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

Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp22 [2024/12/03 18:00] – создано labuser30products:laboratory_iot_c:exp22 [2024/12/03 18:36] (текущий) – [Программный код эксперимента] labuser30
Строка 16: Строка 16:
 ==== Программный код эксперимента ==== ==== Программный код эксперимента ====
  
-<file python Exp25.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file arduino Exp22.ino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from machine import Pin, PWM +#define SPEAKER_PIN 15
-import time +
-_init()+
  
-tones = { +int tones[8] = {262, 294, 330, 349, 392, 440, 494, 523};
-    'c': 262, +
-    'd': 294, +
-    'e': 330, +
-    'f': 349, +
-    'g': 392, +
-    'a': 440, +
-    'b': 494, +
-    'C': 523 +
-}+
  
-speaker = PWM(Pin(15Pin.OUT))+enum {cd, e, f, g, a, b, C};
  
-speaker.duty(512) +void setup() { 
- +  pinMode(SPEAKER_PIN, OUTPUT);  
-speaker.freq(tones['c']) +  analogWriteRange(1024); 
-time.sleep(1+  analogWrite(SPEAKER_PIN, 512)
-speaker.freq(tones['f']) +} 
-time.sleep(1+  
-speaker.freq(tones['b']) +void loop() { 
-time.sleep(1+  analogWriteFreq(tones[c]); 
- +  delay(1000);                       
-speaker.duty(0)+  analogWriteFreq(tones[f]) 
 +  delay(1000); 
 +  analogWriteFreq(tones[b]) 
 +  delay(1000); 
 +}
 </file> </file>
  
-Объявляем //словарь// ''tones'' для записи нот и изначений их частоты. Словарь очень похож на массив, но вместо числовых индеков в нем используются имена элементов. В нашем случае это названия нот, а значения — их частотаСловарь объявляется с помощью фигурных скобок ''{}'', внутри которых следуют пары ''ключ : значение'', перечисленные через запятую+Объявляем //массив// ''tones'' для значений частоты нотЧтобы не запоминать какому индексу в массиве соответствует какая нота воспользуемся специальным типом данных ''enum''Он позволяет создать набор именованных констант, перечисленных через запятую, по умолчанию начиная с нуля. То есть с = 0, d = 1, e = 2 и так далее. Теперь мы можем воспользоваться следующим обращением к элементам массива ''tones[c]'', которое вернет значение частоты ноты с — 262  
- +
-Обращение к элементам словаря происходит аналогично элементам массива, но вместо индекса указывается имя элемента, ключ ''tones['c']''+
- +
-Приведенная программа проигрывает ноты До, Фа и Си, каждую в течение секунды, после чего отключает звук и завершается.+
  
-<WRAP center round info 60%> +Приведенная программа проигрывает по кругу 3 ноты До, Фа и Си.
-[[https://foxford.ru/wiki/informatika/slovari-assotsiativnye-massivy-v-python|Подробнее о словарях в Python]] +
-</WRAP>+
  
 ==== Дополнительное задание ==== ==== Дополнительное задание ====