Приветствую вас на очередном уроке по программированию ESP32 на MicroPython. Сегодня мы разберём код, который можно применить на практике. Будем вращать двигатель постоянного тока в одну сторону до срабатывания кнопки. После чего включим реверс вращения двигателя и вращать он будет до тех пор, пока не сработает вторая копка. Вместо кнопок можно использовать конечные выключатели и данный пример использовать для цикличного выполнения перемещения.
А начнём разбираться с данным примером с изменения примера из прошлого урока, где мы включали и выключали светодиод при нажатии на кнопку.
Для начала давайте немного уменьшим код, а именно избавимся от постоянного написания «machine» в коде.
Для этого поменяем код подключения модуля с
import machine
на
from machine import Pin
То есть получим функцию Pin из модуля machine. И сейчас в коде будет достаточно написать «Pin» вместо «machine.Pin».
Для использования внешнего прерывания в MycroPython используется следующая функция.
button.irq(trigger=Pin.IRQ_FALLING, handler=my_button)
button.irq(trigger=Pin.IRQ_FALLING, handler=my_button) – настраивает обработчик прерываний, который будет вызван при появлении сигнала запуска. Если контакт работает в режиме Pin.IN, то источником сигнала запуска будет служить внешнее значение контакта. Если контакт работает в режиме Pin.OUT, то источником сигнала запуска будет служить выходной буфер контакта. Но если контакт будет работать в режиме Pin.OPEN_DRAIN, то источником сигнала запуска будет служить выходной буфер (для «0») и внешнее значение контакта (для «1»).
trigger – определяет условие, при котором должно срабатывать прерывание:
handler – функция, которую необходимо вызвать при возникновении прерывания, в моём случае это функция my_button. Функция handler должна принимать лишь один аргумент, которым должен быть экземпляр класса Pin.
В качестве примера напишем код включения встроенного светодиода при нажатии на кнопку «boot» по аналогии с примером из прошлого урока, но уже с использованием прерывания.
При вызове функции my_button меняем логическое стояние контакта, к которому подключен светодиод. Тем самым включаем и выключаем его.
При нажатии на кнопку, в консоли видим информацию о номере пина, к которому подключена кнопка.
Если поменять trigger=Pin.IRQ_RISING и проверить, то увидим, что информация появляется, когда мы отпускам кнопку. Вот в чём различие данных условий срабатывания прерывания.
Также можно использовать данные условия одновременно.
trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING
Тем самым при нажатии кнопки светодиод будет включаться, а при отпускании выключаться. Принцип работы аналогичен примеру из прошлого урока, но уже с помощью прерывания.
Давайте применим на практике полученные значения. Для этого подключим к ESP32 драйвер L298n и двигатель. Я буду использовать мотор редуктор от машинки, которую собирал и программировал на MycroPython вот в этом проекте.
В коде определим контакты подключения кнопок. Чтобы не использовать подтягивающие резисторы, воспользуемся подтягивающими резисторами платы ESP32. Для этого инициализируем пины с использованием Pin.PULL_UP.
Инициализируем два пина для работы с драйверами.
Создадим две глобальные переменные:
Функция my_button будет поднимать флаг нажатия кнопки и сохранять в переменной n_pin номер пина нажатой кнопки. Для того чтобы получить номер пина в виде числа, нужно взять из строки символы после четвёртого и без последнего символа строки и преобразовать в целочисленное значение.
Создадим прерывание для каждой кнопки с вызовом функции my_button.
В бесконечном цикле будем выполнять следующие действия.
Сперва мы проверяем переменную press. Если кнопка была нажата, тогда выводим в монитор номер контакта нажатой кнопки и отпускаем флаг press.
Далее проверяем, какая кнопка была нажата. Если левая кнопка, то начинаем вращать двигатель вправо и выводим в монитор надпись о направлении вращения. Если сработала правая кнопка, то меняем направление вращения и выводим в монитор надпись «Влево».
В следующем уроке начнём изучать работу с ШИМ.
Понравился Урок 5. Управление двигателем постоянного тока ESP32 и MicroPython? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
![]() |
Пример 1. Избавимся от постоянного написания «machine» в коде.py | 1 Kb | 762 | Скачать |
![]() |
Пример 2. Прерывания на микроконтроллере ESP32 с помощью языка MycroPython.py | 1 Kb | 761 | Скачать |
![]() |
Пример 3. Управление двигателем постоянного тока с помощью ESP32 и MycroPython.py | 1 Kb | 761 | Скачать |
Уроки ESP32, ESP8266 на MicroPython
15 февраля , 2022
Комментариев:0
Файлов для скачивания:3
Фото:6
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии