Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
products:laboratory_iot:exp5 [2020/05/13 15:07] – создано labuser29 | products:laboratory_iot:exp5 [2024/11/11 16:40] (текущий) – [Программный код эксперимента] labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ===== Эксперимент 5. Телеграф ===== | + | ===== Эксперимент 5. Эмуляция кнопки с фиксацией ===== |
+ | |||
+ | Попробуем имитировать кнопку с фиксацией. После первого нажатия на кнопку светодиод зажигается, | ||
+ | ==== Схема эксперимента | ||
+ | Схема эксперимента не изменилась по сравнению с прошлым, | ||
+ | |||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | На рисунке изображен токоограничительный резистор последовательно со светодиодом. При сборке схемы мы не будем устанавливать его сами так как он уже установлен на плате конструктора. | ||
+ | |||
+ | Соберем эту схему: | ||
+ | {{ : | ||
+ | // | ||
+ | |||
+ | ==== Программный код эксперимента ==== | ||
+ | |||
+ | <file python Exp5.py[enable_line_numbers=" | ||
+ | from machine import Pin | ||
+ | _init() | ||
+ | |||
+ | ButtonPin = 16 | ||
+ | LedPin = 0 | ||
+ | old_button_value = 0 | ||
+ | LedState = 0 | ||
+ | |||
+ | Button = Pin(ButtonPin, | ||
+ | Led = Pin(LedPin, Pin.OUT) | ||
+ | |||
+ | while True: | ||
+ | button_value = Button.value() | ||
+ | if old_button_value != button_value and button_value == 1: | ||
+ | if LedState: | ||
+ | Led.off() | ||
+ | LedState = 0 | ||
+ | else: | ||
+ | Led.on() | ||
+ | LedState = 1 | ||
+ | |||
+ | old_button_value = button_value | ||
+ | </ | ||
+ | |||
+ | Создадим две переменные: | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Считываем состояние кнопки и проверяем факт нажатия: | ||
+ | <code python [enable_line_numbers=" | ||
+ | button_value = Button.value() | ||
+ | if old_button_value != button_value and button_value == 1: | ||
+ | </ | ||
+ | |||
+ | Выражение '' | ||
+ | |||
+ | Иными словами проверяем условие того, что состояние кнопки изменилось И, что новым состоянием кнопки является нажатое состояние. Это выражение позволяет выявить факт нажатия на кнопку. | ||
+ | |||
+ | После регистрации факта нажатии на кнопку нам нужно изменить состояние светодиода на противоположное. Если он был включен — выключаем. Если выключен — включаем. | ||
+ | |||
+ | Напоследок обновляем старое состояние состояние кнопки. | ||
+ | <code python [enable_line_numbers=" | ||
+ | old_button_value = button_value | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Дополнительные задания ==== | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Модифицируй программу так, чтобы светодиод зажигался или выключался только после двух нажатий. Подсказка: | ||
+ | </ |