Урок 4. Кнопка в MicroPython. Условия, циклы и функции.
В этом уроке научимся работать с кнопкой в MicroPython. Разберём 2 примера, позволяющих включать светодиод при нажатии на кнопку. Также в данном уроке рассмотрим основы создания функций, циклов и условий на практических примерах.
Цикл while в Python.
С циклом while мы уже встречались в предыдущих уроках, когда делали бесконечный цикл. Сегодня рассмотрим, как можно реализовать цикл, который позволит сделать ограниченное количество выполнений - интеракций.
За основу возьмём пример из предыдущего урока. Добавим дополнительную глобальную переменную «counter» равную 0 и к циклу добавим условие «counter <5». В конце цикла добавим к переменной «counter» единицу, что позволит нам выполнить цикл 5 раз.
В конце программы выведем информацию, сколько раз включился и выключился светодиод. Сейчас в программе достаточно изменить значение в условии цикла, чтобы поменять количество включений и выключений светодиода.
Функции в Python.
Давайте изменим предыдущий пример таким образом, чтобы количество включений светодиода и время свечения можно было задать из консоли или вызвать в любом месте программы. Для этого создадим функцию «blink_led», в которую передадим 2 значения. Первое значение - «num» - количество включений светодиода, второе - «delay» - время свечения светодиода. Остальной код в функции будет аналогичным предыдущему примеру.
Тут есть 2 отличия: переменная «counter» в данном примере локальная и используется только в цикле. В условии цикла используем переменную «num», а не целое число.
Запустим программу и выполним в консоли следующий код «blink_led(5, 0.3)»: мигание светодиодом 5 раз с интервалом 0,3 сек между включением и выключением. По завершению работы программы увидим надпись «Светодиод включился 5 раз». Сейчас можно поэкспериментировать и задавать разные значения, чтобы разобраться, как работает функция.
Чтобы вызвать функцию в самой программе, достаточно выполнить данный код «blink_led(7, 0.5)», например, в конце данного примера.
Запустим программу и увидим, что светодиод мигает без ввода данных в консоль. Вот так устроены функции в MicroPython.
Цикл for.
Чтобы сделать код из предыдущего примера меньше, давайте заменим цикл while на for.Этим мы избавимся от локальной переменной и счётчика.
Для того чтобы выполнить мигание светодиодом строго определённое число раз, воспользуемся функцией range().
Функцию range() можно представлять, как функцию, что возвращает последовательность чисел, регулируемую количеством переданных в неё аргументов. Их может быть 1, 2 или 3:
Здесь start — это первый элемент последовательности (включительно), stop — последний (не включительно), а step — разность между следующим и предыдущим членами последовательности.
После запуска примера увидим, что всё работает, как и в прошлом примере. При этом мы сократили код на несколько строчек.
Включаем светодиод при нажатии кнопки.
В следующем примере рассмотрим, как можно включать встроенный светодиод на ESP32 при нажатии кнопки «boot» на плате.
Так как кнопка «boot» подключена к GPIO 0, в коде инициализируем данный пин как вход. Считывается состояние контакта аналогичной функцией value(), которую мы использовали в предыдущем уроке для определения состояния светодиода. При нажатии кнопки на контакте получаем логический ноль. Это связано с подключением кнопки. В таком случае мы включаем светодиод, а иначе - выключаем.
При подключении внешнего светодиода и тактовой кнопки вот по такой схеме.
Логика работы изменится. При нажатии на кнопку на контакте будет логическая единица. Нужно учесть, что при написании программы остальной код не изменится.
Как видим, данный пример можно использовать для работы с тактовой кнопкой не зависимо от способа её подключения.
В следующем уроке продолжим работать с тактовой кнопкой.
Понравился Урок 4. Кнопка в MicroPython. Условия, циклы и функции? Не забудь поделиться с друзьями в соц. сетях.
Комментарии