Files
lvgl/docs/README_pt_BR.md
Gabor Kiss-Vamosi 237d06943a
Arduino Lint / lint (push) Canceled after 0s
Build Examples with C++ Compiler / build-examples (push) Canceled after 0s
MicroPython CI / Build esp32 port (push) Canceled after 0s
MicroPython CI / Build rp2 port (push) Canceled after 0s
MicroPython CI / Build stm32 port (push) Canceled after 0s
MicroPython CI / Build unix port (push) Canceled after 0s
C/C++ CI / Build OPTIONS_16BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_24BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_FULL_32BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_NORMAL_8BIT - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_SDL - Ubuntu (push) Canceled after 0s
C/C++ CI / Build OPTIONS_16BIT - cl - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_16BIT - gcc - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_24BIT - cl - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_24BIT - gcc - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_FULL_32BIT - cl - Windows (push) Canceled after 0s
C/C++ CI / Build OPTIONS_FULL_32BIT - gcc - Windows (push) Canceled after 0s
C/C++ CI / Build ESP IDF ESP32S3 (push) Canceled after 0s
C/C++ CI / Run tests with 32bit build (push) Canceled after 0s
C/C++ CI / Run tests with 64bit build (push) Canceled after 0s
BOM Check / bom-check (push) Canceled after 0s
Verify GDB constants are up-to-date / verify-gdb-consts (push) Canceled after 0s
Verify the widget property name / verify-property-name (push) Canceled after 0s
Verify code formatting / verify-formatting (push) Canceled after 0s
Compare file templates with file names / template-check (push) Canceled after 0s
Code Generation / Code Generation (push) Canceled after 0s
Build Docs / build-and-deploy (push) Canceled after 0s
Build .deb packages / build (push) Canceled after 0s
Validate pkg-config and CMake config / cmake (linux) (push) Canceled after 0s
Validate pkg-config and CMake config / pkgconfig (linux) (push) Canceled after 0s
Validate pkg-config and CMake config / cmake (linux-3d) (push) Canceled after 0s
Validate pkg-config and CMake config / pkgconfig (linux-3d) (push) Canceled after 0s
Test API JSON generator / Test API JSON (push) Canceled after 0s
Install LVGL using CMake / build-examples (private) (push) Canceled after 0s
Install LVGL using CMake / build-examples (public) (push) Canceled after 0s
Check Makefile / Build using Makefile (push) Canceled after 0s
Check Makefile for UEFI / Build using Makefile for UEFI (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/benchmark_results_comment/test.sh) (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/filter_docker_logs/test.sh) (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Script Check (scripts/perf/tests/serialize_results/test.sh) (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark 32b - lv_conf_perf32b (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark 64b - lv_conf_perf64b (push) Canceled after 0s
Emulated Performance Test / ARM Emulated Benchmark - Save PR Number (push) Canceled after 0s
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_32B - Ubuntu (push) Canceled after 0s
Performance Tests CI / Perf Tests OPTIONS_TEST_PERF_64B - Ubuntu (push) Canceled after 0s
Port repo release update / run-release-branch-updater (push) Canceled after 0s
Static Checks / Static Checks (push) Canceled after 0s
Verify Font License / verify-font-license (push) Canceled after 0s
Verify Kconfig / verify-kconfig (push) Canceled after 0s
Hardware Performance Test / Hardware Performance Benchmark (push) Canceled after 0s
Hardware Performance Test / HW Benchmark - Save PR Number (push) Canceled after 0s
docs(readme): update the README (#10378)
2026-07-25 22:00:41 +02:00

16 KiB
Raw Permalink Blame History

DocsFórumBlogServiços spacer EN中文日本語한국어PTעברית

Light and Versatile Graphics Library



Demo de Ebike com gráficos vetoriais   Demo de ECG com modelo 3D animado



Visão geralRecursosLVGL ProExemplosIntegraçãoContribuindoLicença

Visão geral

O LVGL é uma biblioteca de UI livre e de código aberto que permite criar interfaces gráficas de usuário para quaisquer MCUs e MPUs, de qualquer fabricante, em qualquer plataforma.

Requisitos: o LVGL não possui dependências externas, o que facilita sua compilação para qualquer alvo moderno, de pequenos MCUs a MPUs multi-core baseados em Linux com suporte a 3D. Para uma UI típica, você precisa de apenas ~100kB de RAM, ~200300kB de flash e um buffer com 1/10 do tamanho da tela para renderização.

Ampla adoção: fabricantes de chips (como NXP, Espressif, Renesas e assim por diante), projetos de RTOS (Zephyr, NuttX, etc.) e fabricantes de placas (Riverdi, Seeed Studio, VIEWE, Elecrow, etc.) já integraram o LVGL. Se uma placa de desenvolvimento tem um display, é muito provável que o fabricante também ofereça suporte ao LVGL.

Ferramentas profissionais: em vez de escrever código C, você pode acelerar e simplificar enormemente o desenvolvimento de UI usando o LVGL Pro, um kit de ferramentas completo com Editor, integração com Figma, Online Viewer e CLI. Ele exporta código C puro do LVGL a partir de XML, sem runtime extra ou mágica oculta. É gratuito para uso não comercial e avaliação.

Para começar, navegue pelos Exemplos, inicie um projeto de Simulador, explore o Online Viewer do LVGL Pro, compile e execute uma UI em uma janela no LVGL Pro com um clique, ou mergulhe na nossa documentação pronta para IA. Basta clicar em Ask AI e perguntar qualquer coisa!

Recursos

Livre, portátil e escalável

  • Uma biblioteca C totalmente portátil (compatível com C++) sem dependências externas.
  • Pode ser compilada para qualquer MCU ou MPU, com qualquer (RT)OS. Make, CMake e globbing simples são todos suportados.
  • Suporta displays monocromáticos, ePaper, OLED ou TFT, ou até monitores. Displays
  • Distribuída sob a licença MIT, então você pode usá-la facilmente em projetos comerciais também.
  • No mínimo absoluto, precisa apenas de 32kB de RAM e 128kB de Flash, um frame buffer e pelo menos um buffer com 1/10 do tamanho da tela para renderização.
  • OS, memória externa e GPU são suportados, mas não obrigatórios.

Widgets, estilos, layouts e muito mais

  • Mais de 30 Widgets integrados: Button, Label, Slider, Chart, Keyboard, Meter, Arc, Table e muitos outros.
  • Sistema de estilos flexível com mais de 100 propriedades de estilo para personalizar qualquer parte dos widgets em qualquer estado.
  • Motores de layout semelhantes a Flexbox e Grid para dimensionar e posicionar os widgets de forma responsiva automaticamente.
  • Data bindings para conectar facilmente a UI à aplicação.
  • Suporta Mouse, Touchpad, Keypad, Keyboard, botões externos e Encoder dispositivos de entrada.
  • Suporte a múltiplos displays.

Renderização

  • Motor de renderização 2D integrado com suporte a formas básicas, gradientes, anti-aliasing, opacidade, rolagem suave, sombras de caixa e projetadas, transformação de imagens, etc.
  • Motor de renderização 3D poderoso para exibir modelos glTF com OpenGL.
  • Suporte a gráficos vetoriais, SVG e Lottie.
  • O texto é renderizado com codificação UTF-8, com suporte aos sistemas de escrita CJK, tailandês, hindi, árabe e persa.
  • Suporte integrado a GPUs como VG-Lite, Dave2D, NeoChrome, OpenGL, etc.

LVGL Pro

Construir UIs em C funciona bem, mas se torna lento para iterar e mais difícil de manter consistente à medida que um projeto cresce. O LVGL Pro permite construir componentes e telas reutilizáveis visualmente, visualizar mudanças instantaneamente e gerenciar data bindings, traduções, animações e testes em um só lugar.

O Pro exporta código C puro do LVGL: o mesmo LVGL que você já usa, sem runtime extra ou dependência. Ele se encaixa em um projeto existente sem mudar a forma como você compila ou entrega.

Construindo uma UI no editor LVGL Pro com pré-visualização ao vivo

Você pode experimentá-lo no navegador em viewer.lvgl.io sem instalar nada, ou baixar o Editor e usá-lo sob a licença gratuita Community.

O LVGL Pro consiste em quatro ferramentas fortemente relacionadas:

  1. Editor: o coração do LVGL Pro. Um aplicativo desktop para construir componentes e telas em XML, gerenciar data bindings, traduções, animações, testes e muito mais. Saiba mais sobre o Formato XML e os Widgets.
  2. Online Viewer: execute o Editor no seu navegador, abra projetos do GitHub e compartilhe facilmente sem configurar um ambiente de desenvolvimento. Visite https://viewer.lvgl.io.
  3. Plugin do Figma: mova um design do Figma para o LVGL Pro com um clique. Veja como funciona aqui.
  4. Ferramenta CLI: gere código C e execute testes em CI/CD. Veja os detalhes aqui.

As camadas Community e Evaluation são gratuitas para uso; consulte o licenciamento para uso comercial.

Exemplos

Você pode conferir mais de 100 exemplos em C e XML em https://lvgl.io/docs/open/examples

O Online Viewer do LVGL Pro também contém muitos tutoriais e os mesmos exemplos, com os quais você pode interagir de forma interativa.

Como prévia, aqui está a mesma UI simples escrita em C e em XML:

Um botão centralizado que imprime quando clicado

static void button_clicked_cb(lv_event_t * e)
{
    printf("Clicked\n");
}

/* ... */

lv_obj_t * button = lv_button_create(lv_screen_active());
lv_obj_center(button);
lv_obj_add_event_cb(button, button_clicked_cb,
                    LV_EVENT_CLICKED, NULL);

lv_obj_t * label = lv_label_create(button);
lv_label_set_text(label, "Hello from LVGL!");
<screen>
  <view>
    <lv_button align="center">
      <event_cb callback="button_clicked_cb" />
      <lv_label text="Hello from LVGL!" />
    </lv_button>
  </view>
</screen>

O XML acima é com o que o LVGL Pro trabalha: você constrói a tela visualmente e ele gera o C para você.

Integração

O LVGL não possui dependências externas, então pode ser facilmente compilado para qualquer dispositivo. Ele vem com drivers integrados, está disponível em muitos gerenciadores de pacotes e RTOSes, e também é fácil de portar para qualquer novo dispositivo.

Pré-integrado

Drivers integrados

O LVGL vem com drivers prontos para uso, então em plataformas comuns você não precisa escrever o tratamento de display e entrada por conta própria:

  • Simulador / desktop: janelas SDL, X11 e Wayland para desenvolver e pré-visualizar sua UI em um PC.
  • Controladores de display: LCDs MIPI-DBI/SPI genéricos (ILI9341, ST7789 e similares), além de controladores de fabricantes como o LTDC da ST e o eLCDIF da NXP.
  • Linux embarcado: framebuffer (fbdev), DRM/KMS, Wayland e libinput/evdev para entrada de toque e ponteiro. Saiba mais aqui.
  • GPU / aceleradores: VG-Lite, NXP PXP, ThinkSilicon NemaGFX, Arm-2D e OpenGL ES

Veja a lista completa e os guias de configuração na documentação de Integração.

No LVGL Pro

No LVGL Pro você pode criar projetos prontos para uso somente de UI, VSCode, Zephyr e Linux com um único clique. image

Portando manualmente

Integrar o LVGL é muito simples. Basta colocá-lo em qualquer projeto e compilá-lo como você compilaria outros arquivos. Para configurar o LVGL, copie lv_conf_template.h como lv_conf.h, habilite o primeiro #if 0 e ajuste as configurações conforme necessário. (A configuração padrão geralmente é suficiente.) Se disponível, o LVGL também pode ser usado com Kconfig.

Uma vez no projeto, você pode inicializar o LVGL e criar os dispositivos de display e entrada da seguinte forma:

#include "lvgl/lvgl.h" /*Define LV_LVGL_H_INCLUDE_SIMPLE to include as "lvgl.h"*/

#define TFT_HOR_RES 320
#define TFT_VER_RES 240

static uint32_t my_tick_cb(void)
{
    return my_get_millisec();
}

static void my_flush_cb(lv_display_t * disp, const lv_area_t * area, uint8_t * px_map)
{
    /*Write px_map to the area->x1, area->x2, area->y1, area->y2 area of the
     *frame buffer or external display controller. */

    /* signal LVGL that we're done */
    lv_display_flush_ready(disp);
}

static void my_touch_read_cb(lv_indev_t * indev, lv_indev_data_t * data)
{
   if(my_touch_is_pressed()) {
       data->point.x = touchpad_x;
       data->point.y = touchpad_y;
       data->state = LV_INDEV_STATE_PRESSED;
   } else {
       data->state = LV_INDEV_STATE_RELEASED;
   }
}

void main(void)
{
    my_hardware_init();

    /*Initialize LVGL*/
    lv_init();

    /*Set millisecond-based tick source for LVGL so that it can track time.*/
    lv_tick_set_cb(my_tick_cb);

    /*Create a display where screens and widgets can be added*/
    lv_display_t * display = lv_display_create(TFT_HOR_RES, TFT_VER_RES);

    /*Add rendering buffers to the screen.
     *Here adding a smaller partial buffer assuming 16-bit (RGB565 color format)*/
    static uint8_t buf[TFT_HOR_RES * TFT_VER_RES / 10 * 2]; /* x2 because of 16-bit color depth */
    lv_display_set_buffers(display, buf, NULL, sizeof(buf), LV_DISPLAY_RENDER_MODE_PARTIAL);

    /*Add a callback that can flush the content from `buf` when it has been rendered*/
    lv_display_set_flush_cb(display, my_flush_cb);

    /*Create an input device for touch handling*/
    lv_indev_t * indev = lv_indev_create();
    lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);
    lv_indev_set_read_cb(indev, my_touch_read_cb);

    /*The drivers are in place; now we can create the UI*/
    lv_obj_t * label = lv_label_create(lv_screen_active());
    lv_label_set_text(label, "Hello world");
    lv_obj_center(label);

    /*Execute the LVGL-related tasks in a loop*/
    while(1) {
        lv_timer_handler();
        my_sleep_ms(5);         /*Wait a little to let the system breathe*/
    }
}

Contribuindo

O LVGL é um projeto aberto, e as contribuições são muito bem-vindas. Existem muitas maneiras de contribuir, desde simplesmente falar sobre o seu projeto, escrever exemplos, melhorar a documentação, corrigir bugs, ou até mesmo hospedar o seu próprio projeto sob a organização LVGL.

Para uma descrição detalhada das oportunidades de contribuição, visite a seção Contribuindo da documentação.

Centenas de pessoas já deixaram sua marca no LVGL. Seja uma delas! Vejo você por aqui! 🙂

Licença

A biblioteca LVGL é distribuída sob a licença MIT, então você pode usá-la livremente tanto em produtos de código aberto quanto comerciais sem royalties. Veja LICENCE.txt.

Todas as bibliotecas de terceiros incluídas no LVGL também são lançadas sob licenças compatíveis com a MIT, então você pode usar o LVGL e suas dependências com confiança.

O LVGL Pro possui licenciamento separado:

  • As camadas Community e Evaluation são gratuitas para uso não comercial, perfeitas para aprendizado, projetos de hobby e avaliação das ferramentas.
  • O uso comercial do LVGL Pro requer uma licença paga. Veja os Preços e Detalhes.