Note that you need to choose a powerful enough board to run LVGL and your GUI. See the requirements of LVGL.
For example ESP32 is a good candidate to create your UI with LVGL.
Get the LVGL Arduino library¶
LVGL can be installed via the Arduino IDE Library Manager or as a .ZIP library.
Set up drivers¶
To get started it's recommended to use TFT_eSPI library as a TFT driver to simplify testing.
To make it work, setup
TFT_eSPI according to your TFT display type via editing either
or by selecting a configuration in the
Both files are located in
TFT_eSPI library's folder.
LVGL has its own configuration file called
lv_conf.h. When LVGL is installed, follow these configuration steps:
Go to directory of the installed Arduino libraries
lv_conf.hinto the Arduino Libraries directory next to the
lv_conf.hand change the first
Set the color depth of you display in
Initialize LVGL and run an example¶
Take a look at LVGL_Arduino.ino to see how to initialize LVGL. TFT_eSPI is used as the display driver.
In the INO file you can see how to register a display and a touchpad for LVGL and call an example.
Note that, there is no dedicated INO file for every example, but you can call functions like
lv_example_slider_1() to run an example.
Most of the examples are available in the
lvgl/examples folder. Some are also available in
lv_demos, which needs to be installed and configured separately.
Debugging and logging¶
LVGL can display debug information in case of trouble.
LVGL_Arduino.ino example there is a
my_print method, which sends this debug information to the serial interface.
To enable this feature you have to edit the
lv_conf.h file and enable logging in the section
/*Log settings*/ #define USE_LV_LOG 1 /*Enable/disable the log module*/ #if LV_USE_LOG /* How important log should be added: * LV_LOG_LEVEL_TRACE A lot of logs to give detailed information * LV_LOG_LEVEL_INFO Log important events * LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem * LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail * LV_LOG_LEVEL_NONE Do not log anything */ # define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
After enabling the log module and setting LV_LOG_LEVEL accordingly, the output log is sent to the
Serial port @ 115200 bps.