Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
products:laboratory_iot:exp17 [2020/05/14 16:32] – [Программный код эксперимента] labuser29 | products:laboratory_iot:exp17 [2024/11/14 11:59] (текущий) – [Эксперимент 17. Индикатор уровня] labuser30 | ||
---|---|---|---|
Строка 3: | Строка 3: | ||
В технике часто применяются индикаторы уровней на светодиодной шкале. Например в звукозаписывающем оборудовании, | В технике часто применяются индикаторы уровней на светодиодной шкале. Например в звукозаписывающем оборудовании, | ||
- | В левой части платы конструктора имеется 6 светодиодов подходящих по цвету для использования в качестве шкалы. Когда уровень сигнала в пределах нормы, он отображается зеленым, | + | В левой части платы конструктора имеется 6 светодиодов подходящих по цвету для использования в качестве шкалы. Когда уровень сигнала в пределах нормы, он отображается зеленым, |
Подключим все 6 светодиодов к микроконтроллеру. | Подключим все 6 светодиодов к микроконтроллеру. | ||
Строка 61: | Строка 61: | ||
</ | </ | ||
+ | ==== Массивы ==== | ||
Ранее мы уже много раз сталкивались с // | Ранее мы уже много раз сталкивались с // | ||
Строка 86: | Строка 87: | ||
После исполнения этого цикла в массиве '' | После исполнения этого цикла в массиве '' | ||
+ | |||
+ | Создаем объект АЦП | ||
+ | <code python [enable_line_numbers=" | ||
+ | adc = machine.ADC(0) | ||
+ | </ | ||
+ | |||
+ | Объявляем подпрограмму '' | ||
+ | |||
+ | <code python [enable_line_numbers=" | ||
+ | def ledOff(): | ||
+ | for led in leds: | ||
+ | led.off() | ||
+ | </ | ||
+ | |||
+ | Эта функция гасит все светодиоды. Она поочередно перебирает все светодиоды и выключает их. | ||
+ | |||
+ | Объявляем функцию '' | ||
+ | <code python [enable_line_numbers=" | ||
+ | for i in range(count): | ||
+ | led = leds[i] | ||
+ | led.on() | ||
+ | </ | ||
+ | Она нужна для включения нужного количества светодиодов подряд. В качестве параметра она принимает количество светодиодов для включения. Оператор '' | ||
+ | |||
+ | Отлично, | ||
+ | <code python [enable_line_numbers=" | ||
+ | led = leds[i] | ||
+ | </ | ||
+ | |||
+ | И, когда нужный объект светодиода в переменной, | ||
+ | <code python [enable_line_numbers=" | ||
+ | led.on() | ||
+ | </ | ||
+ | |||
+ | Теперь у нас есть 2 функции '' | ||
+ | |||
+ | <code python [enable_line_numbers=" | ||
+ | while True: | ||
+ | value = adc.read() | ||
+ | ledOff() | ||
+ | |||
+ | if value in range(0, | ||
+ | ledOn(1) | ||
+ | elif value in range(171, | ||
+ | ledOn(2) | ||
+ | elif value in range(341, | ||
+ | ledOn(3) | ||
+ | elif value in range(511, | ||
+ | ledOn(4) | ||
+ | elif value in range(681, | ||
+ | ledOn(5) | ||
+ | elif value in range(851, | ||
+ | ledOn(6) | ||
+ | </ | ||
+ | |||
+ | Здесь все просто. Мы считываем значение напряжения с помощью АЦП, выключаем все светодиоды и анализируем сколько светодиодов нужно зажечь. Мы помним, | ||
+ | |||
+ | Если сигнал в интервале от 0 до 170, то мы должны включить 1 светодиод. Если сигнал в интервале от 171 до 340 — зажигаем 2 светодиода и т.д. С помощью оператора '' | ||
+ | |||
+ | ==== Дополнительное задание ==== | ||
+ | <WRAP center round tip 60%> | ||
+ | * Попробуй изменить интервалы, | ||
+ | * Измени 1 строку в программе, | ||
+ | </ | ||
+ |