Light and Versatile Graphics Library (LVGL) with Arduino

   LVGL (Light and Versatile Graphics Library) is a free and open-source graphics library providing everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and a low memory footprint.




Requirements 

  •   16, 32 or 64 bit microcontroller or processor
  • > 16 MHz clock speed is recommended
  • Flash/ROM: > 64 kB for the very essential components (> 180 kB is recommended)
  • C99 or newer compiler

All repositories of the LVGL project are hosted on GitHub: https://github.com/lvgl

Porting  :  

Get the LVGL Arduino 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.

Go Menu --->  Sketch ---> Include Library --> Manage Libraries ---> open Dialog box . 

Type LVGL , will see below screen. 

LVGL Library


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:

  1. Go to directory of the installed Arduino libraries

  2. Go to lvgl and copy lv_conf_template.h as lv_conf.h into the Arduino Libraries directory next to the lvgl library folder.

  3. Open lv_conf.h and change the first #if 0 to #if 1

  4. Set the resolution of your display in LV_HOR_RES_MAX and LV_VER_RES_MAX

  5. Set the color depth of you display in LV_COLOR_DEPTH

  6. Set LV_TICK_CUSTOM 1

Set up Graphics drivers :


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.