Найти тему
Яролав Митрофанов

Сенсорный дисплей ILI9341 + ESP32 + LVGL (часть 2)

Статья предполагает что дисплей уже работает и данные калибровки получены из примеров библиотеки TFTeSPI.

Скачиваем библиотеку LVGL по ссылке https://github.com/lvgl/lvgl

Распаковываем и кидаем в папку LIB проекта как есть.

Данный код выводит на дисплей клавиатуру и текстовое поле.

За основу взят пример из самой библиотеки, функции и настройки драйверов в скопировал полностью от туда. Но в функции опроса тачскрина пришлось приделать костыль в виде

data->point.x = 320 - touchY; //Костыль, но лучше решения не нашел

data->point.y = touchX;

так как тачскрин работает вертикально и пятый параметр в массиве калибровке ни как не исправляет положение, пришлось просто в ручную прописать это.

Функция lv_timer_handler(); должна вызываться периодически, можно вызывать в отдельном потоке или в обработчике таймера.

Для примера использовал таймер для вызова функции lv_tick_inc(10);

без вызова этой функции не будет работать ввод с тачскрина или с какого либо другого устройства, в функцию надо передавать время в мс, которое проходит между вызовами этой функции, приемлемо интерфейс работает в плоть до значения 30.

В библиотеке меня порадовала удобная работа с клавиатурой, если создавать устройство которое взаимодействует с WIFI очень удобно реализовать ввод пароля, а не прописывать его в коде или какими то другими не очень "юзерфрендли" путями.

Так же рекомендую скачать SquareLine Studio, данная программа имеет интуитивно понятный интерфейс, позволяет редактировать интерфейс путем перетаскивания, добавлять шрифты и изображения, сгенерированный код легко подключается к любому проекту и сразу работает. Бесплатного функционала хватит для многих нужд.

Ссылка на готовый проект https://github.com/yaroslff/ILILVGLZESP32template.git

На сайте LVGL так же есть онлайн конверторы изображений и шрифтов в разделе Tools.

P.S.

Эта библиотека не смотря на все свои преимущества может показаться довольно тяжеловесной, нашел ещё более лёгкую библиотек с возможностью редактирования интерфейса в графическом редакторе с помощью перетаскивания, о ней расскажу в следующей статье.

На данный момент ищу разные библиотеки построения интерфейсов для микроконтроллеров, что бы собрать для себя список разных решений под различные нужды и ресурсы МК. Буду благодарен, если кто то в коментах отпишет о библиотеках которые использует.