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.hor 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
lvgland copylv_conf_template.haslv_conf.hinto the Arduino Libraries directory next to thelvgllibrary folder.Open
lv_conf.hand change the first#if 0to#if 1Set the resolution of your display in
LV_HOR_RES_MAXandLV_VER_RES_MAXSet the color depth of you display in
LV_COLOR_DEPTHSet
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_examplesand copylv_ex_template.haslv_ex_conf.hnext to thelv_examplesfolder.Open
lv_ex_conf.hand change the first#if 0to#if 1Enable 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.