mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
121 lines
5.9 KiB
Markdown
121 lines
5.9 KiB
Markdown
<h1 align="center"> LVGL - Light and Versatile Graphics Library</h1>
|
|
<p align="center">
|
|
<a href="https://github.com/lvgl/lvgl/blob/master/LICENCE.txt"><img src="https://img.shields.io/badge/licence-MIT-blue.svg"></a>
|
|
<a href="https://github.com/lvgl/lvgl/releases/tag/v7.0.0"><img src="https://img.shields.io/badge/version-7.0.0-blue.svg"></a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img src="https://lvgl.io/assets/images/img_1.png">
|
|
</p>
|
|
|
|
<p align="center">
|
|
LVGL provides everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint.
|
|
</p>
|
|
|
|
<h4 align="center">
|
|
<a href="https://lvgl.io">Website </a> ·
|
|
<a href="https://lvgl.io/demos">Online demo</a> ·
|
|
<a href="https://docs.lvgl.io/">Docs</a> ·
|
|
<a href="https://forum.lvgl.io">Forum</a> ·
|
|
</h4>
|
|
|
|
---
|
|
|
|
## Features
|
|
* Powerful building blocks: buttons, charts, lists, sliders, images, etc.
|
|
* Advanced graphics: animations, anti-aliasing, opacity, smooth scrolling
|
|
* Simultaneously use various input devices: touchscreen, mouse, keyboard, encoder, buttons, etc.
|
|
* Simultaneously use multiple displays: e.g. monochrome and color display
|
|
* Multi-language support with UTF-8 encoding, Bidirectional support, and Arabic text handling
|
|
* Fully customizable graphical elements via CSS-like styles
|
|
* Hardware independent to use with any microcontroller or display
|
|
* Scalable to operate with little memory (64 kB Flash, 10 kB RAM)
|
|
* OS, External memory and GPU are supported but not required
|
|
* Single frame buffer operation even with advances graphical effects
|
|
* Written in C for maximal compatibility (C++ compatible)
|
|
* Micropython Binding exposes [LVGL API in Micropython](https://blog.lvgl.io/2019-02-20/micropython-bindings)
|
|
* Simulator to develop on PC without embedded hardware
|
|
* Tutorials, examples, themes for rapid development
|
|
* Documentation and API references
|
|
|
|
## Supported devices
|
|
Basically, every modern controller (which is able to drive a display) is suitable to run LVGL. The minimal requirements are:
|
|
- 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)
|
|
- RAM:
|
|
- Static RAM usage: ~2 kB depending on the used features and objects types
|
|
- Stack: > 2kB (> 8 kB is recommended)
|
|
- Dynamic data (heap): > 2 KB (> 16 kB is recommended if using several objects).
|
|
Set by `LV_MEM_SIZE` in *lv_conf.h*.
|
|
- Display buffer: > *"Horizontal resolution"* pixels (> 10 × *"Horizontal resolution"* is recommended)
|
|
- C99 or newer compiler
|
|
|
|
*Note that the memory usage might vary depending on the architecture, compiler and build options.*
|
|
|
|
Just to mention some platforms:
|
|
- STM32F1, STM32F3, [STM32F4](https://blog.lvgl.io/2017-07-15/stm32f429_disco_port), [STM32F7](https://github.com/lvgl/lv_port_stm32f746_disco_sw4stm32), STM32L4
|
|
- Microchip dsPIC33, PIC24, PIC32MX, PIC32MZ
|
|
- NXP: Kinetis, LPC, iMX, iMX RT
|
|
- [Linux frame buffer](https://blog.lvgl.io/2018-01-03/linux_fb) (/dev/fb)
|
|
- [Raspberry PI](http://www.vk3erw.com/index.php/16-software/63-raspberry-pi-official-7-touchscreen-and-littlevgl)
|
|
- [Espressif ESP32](https://github.com/lvgl/lv_port_esp32)
|
|
- [Infineon aurix](https://github.com/lvgl/lv_port_aurix)
|
|
- Nordic NRF52
|
|
- Quectell M66
|
|
|
|
## Get started
|
|
his list shows the recommended way of learning the library:
|
|
1. Check the [Online demos](https://lvgl.io/demos) to see LVGL in action (3 minutes)
|
|
2. Read the [Introduction](https://docs.lvgl.io/latest/en/html/intro/index.html) page of the documentation (5 minutes)
|
|
3. Read the [Quick overview](https://docs.lvgl.io/latest/en/html/get-started/quick-overview.html) page of the documentation (15 minutes)
|
|
4. Set up a [Simulator](https://docs.lvgl.io/latest/en/html/get-started/pc-simulator.html) (10 minutes)
|
|
5. Try out some [Examples](https://github.com/lvgl/lv_examples/)
|
|
6. Port LVGL to a board. See the [Porting](https://docs.lvgl.io/latest/en/html/porting/index.html) guide or check the ready to use [Projects](https://github.com/lvgl?q=lv_port_&type=&language=)
|
|
7. Read the [Overview](https://docs.lvgl.io/latest/en/html/overview/index.html) page to get a better understanding of the library. (2-3 hours)
|
|
8. Check the documentation of the [Widgets](https://docs.lvgl.io/latest/en/html/widgets/index.html) to see their features and usage
|
|
9. If you have questions got to the [Forum](http://forum.lvgl.io/)
|
|
10. Read the [Contributing](https://docs.lvgl.io/latest/en/html/contributing/index.html) guide to see how you can help to improve LVGL (15 minutes)
|
|
|
|
## Examples
|
|
|
|
For more examples see the [lv_examples](https://github.com/lvgl/lv_examples) repository.
|
|
|
|
### Button with label
|
|
```c
|
|
lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL); /*Add a button the current screen*/
|
|
lv_obj_set_pos(btn, 10, 10); /*Set its position*/
|
|
lv_obj_set_size(btn, 100, 50); /*Set its size*/
|
|
lv_obj_set_event_cb(btn, btn_event_cb); /*Assign a callback to the button*/
|
|
|
|
lv_obj_t * label = lv_label_create(btn, NULL); /*Add a label to the button*/
|
|
lv_label_set_text(label, "Button"); /*Set the labels text*/
|
|
|
|
...
|
|
|
|
void btn_event_cb(lv_obj_t * btn, lv_event_t event)
|
|
{
|
|
if(event == LV_EVENT_CLICKED) {
|
|
printf("Clicked\n");
|
|
}
|
|
}
|
|
```
|
|
![LVGL button with label example](https://raw.githubusercontent.com/lvgl/docs/latest/misc/simple_button_example.gif)
|
|
|
|
### LVGL from Micropython
|
|
Learn more about [Micropython](https://docs.lvgl.io/en/html/get-started/micropython).
|
|
```python
|
|
# Create a Button and a Label
|
|
scr = lv.obj()
|
|
btn = lv.btn(scr)
|
|
btn.align(lv.scr_act(), lv.ALIGN.CENTER, 0, 0)
|
|
label = lv.label(btn)
|
|
label.set_text("Button")
|
|
|
|
# Load the screen
|
|
lv.scr_load(scr)
|
|
```
|
|
|
|
## Contributing
|
|
For a detailed description of contribution opportunities visit the [Contributing](https://docs.lvgl.io/latest/en/html/contributing/index.html) section of the documentation.
|