youtube · ru

Создание меню для ESP32 и TFT-дисплея в FreeDC WinUI

Автор демонстрирует создание интерактивного меню с переключением экранов для микроконтроллера ESP32 и TFT-дисплея в визуальной среде FreeDC WinUI с управлением через аналоговый джойстик.

Превью исходного ролика
ИСТОЧНИКТелеграмм канал AC/DC Форум #eap32 #arduinoproject #FreeDC
Открыть оригинал ↗

Описание

Автор демонстрирует создание интерактивного меню с переключением экранов для микроконтроллера ESP32 и TFT-дисплея в визуальной среде FreeDC WinUI с управлением через аналоговый джойстик.

Перевод

00:00 ESP32 и TFT экран. Сделаем пункты меню с переходами на разные экраны. 00:05 Открываем FreeDC. В библиотеке элементов выбираем нужный экран. В моем случае — вот такой: 1.8 TFT LCD 128x160 ST7735S. 00:09 Перетаскиваем блок на рабочее поле и нажимаем на него два раза. Откроется редактор экрана. 00:13 В редакторе экрана выбираем элемент «Меню». 00:18 Сразу заспамим несколько экранов. Подпишем каждый экран простыми элементами «Текст»: «Экран 1», «Экран 2» и так далее. 00:26 Настроим пункты меню, а точнее дадим им названия. Я так и назвал: «Пункт 1», «Пункт 2» и «Пункт 3». Назначаем, какой экран открывает каждый пункт. 00:32 Что касается управления этими пунктами. За пролистывание пунктов и их выбор будут отвечать булевые переменные. В моем случае органом управления будет являться вот такой джойстик. 00:40 При движении вверх и вниз будет пролистываться меню, а при нажатии на джойстик — выбираться. 00:45 У джойстика есть два аналоговых сигнала и один дискретный, а именно — на нажатие. Поэтому мы и добавим два аналоговых входа. 00:51 Назначим им пины и добавим вещественные переменные X и Y. 00:54 Но нам нужны булевые сигналы, а тут вещественные. Как этого добиться? А очень просто. 00:58 После загрузки вы можете открыть онлайн-отладку и посмотреть, какие данные приходят при движении джойстика и в состоянии покоя. 01:04 Для каждого МК значения могут отличаться, это зависит от АЦП контроллера. 01:09 В моем случае для ESP32 это 12 бит. Минимальный уровень сигнала ноль, а максимальный — 4095. 01:15 К слову сказать, у Arduino Nano АЦП 10 бит, и уровень сигнала будет от нуля до 1023. 01:21 Итак, давайте переведем вещественное значение в булевое с помощью функции сравнения. Блок сравнения GT работает только с целыми числами, поэтому переведем нашу переменную через преобразователь в целое TO_INT и подключим к блоку. 01:31 А нижнюю ножку блока я поставлю константу со значением 2000. И выход с блока назову «Вниз». 01:37 Как это будет работать: когда я поведу джойстик вниз, значения начнут увеличиваться, и как только значение будет выше заданной константы, то есть 2000, блок сравнения выдаст булевую единицу. Вот и все. 01:46 Теперь зайдем в редактор экрана и привяжем переменную «Вниз» для прокрутки меню вниз. 01:52 Теперь сделаем то же самое и для движения вверх, задав пороговую константу 1500. 01:55 Теперь добавлю по такому же принципу движение назад. Ну то есть когда мы попадаем на экраны, чтобы выйти обратно в меню, нужно нажать на соответствующую клавишу. 02:05 И последний элемент для меню — это ввод, то есть выбор пункта, что-то вроде Enter. На джойстике есть пин SW, он дискретный. Поэтому просто добавляю дискретный вход DI и создаю булевую переменную. 02:14 Привязываю ее для меню к пункту ввода Enter. 02:18 Загружаем проект в МК и смотрим, что получилось. 02:22 Демонстрация работы готового меню на макетной плате с микроконтроллером и TFT-экраном: перемещение джойстиком между пунктами меню, выбор нажатием и возврат назад. 02:33 Скачать программу и попробовать свои проекты вы можете в моем сообществе.

Темы

ИЗ КАТАЛОГА

Другие разборы

← Вернуться в каталог