Так как я не нашел в рунете готовой инструкции как данное комбо подружить вместе и что бы оно заработало сразу, без танцев с бубном, решил написать эту статью.
Сенсорные дисплеи на контроллере ILI9341 одни из самых популярных и недорогих на Aliexpress, есть варианты и без тачскрина, имеют довольно большое разрешение (320X240) в контексте разработки устройств на микроконтроллерах, соответственно и ресурсов он требует достаточно.
ESP32 имеет достаточную производительность, для того что бы отрисовывать довольно сложные графические интерфейсы. Лучше использовать дисплеи с SPI интерфейсом, так как пинов у данного МК не очень много, скорости SPI вполне хватает для комфортной работы с дисплеем.
LVGL - свободная, универсальная библиотека для построения графических интерфейсов, меня в ней привлекло то, что доступен графический редактор SquareLine Studio.
В Качестве среды разработки для Arduino я использую Platform IO в VS code. Arduino IDE для меня слишком минималистична хоть и имеет свои плюсы, хотя я их и не нашел, кек:).
Ну что ж, приступим.
Подключено у меня всё так:
T_IRQ - не подключен(при касании тача на пине появляется 0, пригодится например для вывода контроллера из сна)
T_OUT - D19
T_DN - D23
T_CS - D14
T_CLK - D18
SDO - не подключен
LED - 3.3V
SCK - D18
SDI - D23
D/C - D2
RESET - D4
GND - GND
VCC - 3.3V
Для начала установим библиотеку TFT_eSPI из менеджера библиотек Platform IO.
Далее нам нужно в папке с библиотекой найти пример Keypad_240x320.ino
Он нам понадобится для того что бы получить данные калибровки тачскрина и проверки работоспособности дисплея. Код калибровки можно использовать в своих проектах с GUI.
Так как это пример для Arduino IDE, здесь нет прототипов функций, по этому вставляем после инклудов прототипы всех функций реализованных ниже main.
Далее нужно настроить библиотеку TFT_eSPI. Находим файл User_setup.h и заменяем всё этим кодом.
После этого проект должен собраться.
Далее в функцию калибровки нужно добавить код отправки данных масcива calData[5], эти данные нам потребуются позже.
В строке Serial.begin(9600); у мена стоит Serial.begin(115200);
Далее собираем проект и прошиваем. Калибруем дисплей по четырём точкам и в терминале появятся данные калибровки, эти данные индивидуальны для каждого дисплея, их можно использовать в других проектах и не калибровать дисплей постоянно. Но если проект предполагает долгую жизнь рекомендую встроить код калибровки который будет запускаться по нажатию кнопки или из меню. Тот кто пользовался КПК на windows mobile меня хорошо понимает, со временем параметры тачскрина меняются и калибровка сбивается.
На этом я закончу первую часть, во второй части уже приступим к подключению LVGL.
Продолжение следует https://dzen.ru/media/id/623c5e749ed0da7141f63089/631f505e34027477e82e4ff5