LittlevGL provides everything you need to create a Graphical User Interface (GUI) on embedded systems with easy-to-use graphical elements, beautiful visual effects and low memory footprint.
Homepage: https://littlevgl.com
- Key features
- Porting
- Project set-up
- PC simulator
- Related repositories
- Screenshots
- Contributing
- Donate
- Powerful building blocks: buttons, charts, lists, sliders, images, etc.
- Advanced graphics with animations, anti-aliasing, opacity, smooth scrolling
- Various input devices: touch pad, mouse, keyboard, encoder, buttons, etc.
- Multi-language support with UTF-8 encoding
- Fully customizable graphical elements
- Hardware independent to use with any microcontroller or display
- Scalable to operate with little memory (50 kB Flash, 10 kB RAM)
- OS, External memory and GPU supported but not required
- Single frame buffer operation even with advances graphical effects
- Written in C for maximal compatibility
- Simulator to develop on PC without embedded hardware
- Tutorials, examples, themes for rapid development
- Documentation and API references online
In the simplest case you need 5 things:
- Call
lv_tick_inc(x)everyxmillisecods in a Timer or Task (xshould be between 1 and 10) - Register a function which can copy a pixel array to an area of the screen.
- Register a function which can read an input device. (E.g. touch pad)
- Copy
lv_conf_templ.haslv_conf.hand set at leastLV_HOR_RES,LV_VER_RESandLV_COLOR_DEPTH. - Call
lv_task_handler()periodically every few milliseconds. For a detailed description visit https://littlevgl.com/porting Or check the Porting tutorial
- Clone or Download the lvgl repository:
git clone https://github.com/littlevgl/lvgl.git - Create project with your prefered IDE and add the lvgl folder
- Copy lvgl/lv_conf_templ.h as lv_conf.h next to the lvgl folder
- In the lv_conf.h delete the first
#if 0and its#endif. Leave the default configuration for the first try. - In your main.c: #include "lvgl/lvgl.h"
- In your main function:
- lvgl_init();
- tick, display and input device initialization (see above)
- To test create a label:
lv_obj_t * label = lv_label_create(lv_scr_act(), NULL); - In the main while(1) call
lv_task_handler();and make a few milliseconds delay (e.g.my_delay_ms(5);) - Compile the code and load it to your embedded hardware
If you don't have an embedded hardware you can test the graphics library in a PC simulator. The simulator uses SDL2 library to emulate a display on your monitor and a touch pad with your mouse.
There is a pre-configured PC project for Eclipse CDT in this repository: https://github.com/littlevgl/pc_simulator
- PC simualtor: https://github.com/littlevgl/pc_simulator
- Projects: https://github.com/littlevgl/lv_projects
- Examples: https://github.com/littlevgl/lv_examples
- Drivers: https://github.com/littlevgl/lv_drivers
See CONTRIBUTING.md
If you are pleased with this graphics library, found it useful, or are happy with the support you got, please help its further development:





