The LVGL library is directly available as Arduino libraries.
Note that you need to choose a board powerful enough to run LVGL and your GUI. See the requirements of LVGL.
For example ESP32 is a good candidate to create UI's with LVGL.
LVGL can be installed via the Arduino IDE Library Manager or as a .ZIP library.
You can Download the latest version of LVGL from GitHub and simply copy it to Arduino's library folder.
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:
User_Setup.h
- or by selecting a configuration in the
User_Setup_Select.h
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 the directory of the installed Arduino libraries
- Go to
lvgl
and copylv_conf_template.h
aslv_conf.h
into the Arduino Libraries directory next to thelvgl
library folder. - Open
lv_conf.h
and change the first#if 0
to#if 1
to enable the content of the file - Set the color depth of you display in :c:macro:`LV_COLOR_DEPTH`
Finally the layout with lv_conf.h
should look like this:
arduino |-libraries |-lvgl |-other_lib_1 |-other_lib_2 |-lv_conf.h
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. Instead,
you can load an example by calling an lv_example_...
function. For
example :cpp:func:`lv_example_btn_1`.
important: | Due to some the limitations of Arduino's build system you
need to copy lvgl/examples to lvgl/src/examples . Similarly for
the demos lvgl/demos to lvgl/src/demos . |
---|
LVGL can display debug information in case of trouble. In the
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
:
/*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 :c:macro:`LV_LOG_LEVEL` accordingly, the
output log is sent to the Serial
port @ 115200 bps.