Статья предполагает что дисплей уже работает и данные калибровки получены из примеров библиотеки 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.
Эта библиотека не смотря на все свои преимущества может показаться довольно тяжеловесной, нашел ещё более лёгкую библиотек с возможностью редактирования интерфейса в графическом редакторе с помощью перетаскивания, о ней расскажу в следующей статье.
На данный момент ищу разные библиотеки построения интерфейсов для микроконтроллеров, что бы собрать для себя список разных решений под различные нужды и ресурсы МК. Буду благодарен, если кто то в коментах отпишет о библиотеках которые использует.