youtube · ru
Создание меню для ESP32 и TFT-дисплея в FreeDC WinUI
Автор демонстрирует создание интерактивного меню с переключением экранов для микроконтроллера ESP32 и TFT-дисплея в визуальной среде FreeDC WinUI с управлением через аналоговый джойстик.
Обновлено 02.10.2026
ИСТОЧНИКТелеграмм канал 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 Скачать программу и попробовать свои проекты вы можете в моем сообществе.


