Arduino¶
The core LVGL library and the examples are directly available as Arduino libraries.
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 Ardunio library¶
LVGL can be installed via Arduino IDE Library Manager or as an .ZIP library. It will also install lv_exmaples which contains a lot of examples and demos to try LVGL.
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
User_Setup.h
or by selecting a configuration in the
User_Setup_Select.h
Both files are located in TFT_eSPI
library's folder.
Configure LVGL¶
LVGL has its own configuration file called lv_conf.h
. When LVGL is installed the followings needs to be done to configure it:
Go to 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
Set the resolution of your display in
LV_HOR_RES_MAX
andLV_VER_RES_MAX
Set the color depth of you display in
LV_COLOR_DEPTH
Set
LV_TICK_CUSTOM 1
Configure the examples¶
lv_examples
can be configures similarly to LVGL but it's configuration file is called lv_ex_conf.h
.
Go to directory of the installed Arduino libraries
Go to
lv_examples
and copylv_ex_template.h
aslv_ex_conf.h
next to thelv_examples
folder.Open
lv_ex_conf.h
and change the first#if 0
to#if 1
Enable the demos you want to use. (The small examples starting with
lv_ex_...()
are always enabled.)
Initialize LVGL and run an example¶
Take a look at LVGL_Arduino.ino to see how to initialize LVGL. It also uses TFT_eSPI as driver.
In the INO file you can see how to register a display and a touch pad for LVGL and call an example.
Note that, there is no dedicated INO file for every example but you can call functions like lv_ex_btn1()
or lv_ex_slider1()
to run an example.
For the full list of examples see the README of lv_examples.
Debugging and logging¶
In case of trouble there are debug information inside LVGL.
In the LVGL_Arduino.ino
example there is my_print
method, which allow to send this debug information to the serial interface.
To enable this feature you have to edit lv_conf.h
file and enable logging in 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 log module and setting LV_LOG_LEVEL accordingly the output log is sent to the Serial
port @ 115200 Baud rate.