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 the Arduino IDE Library Manager or as a .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. TFT_eSPI is used as the display 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 LVGL can display debug information.
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 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 LV_LOG_LEVEL accordingly the output log is sent to the Serial
port @ 115200 bps.