Plataformas
Uma plataforma no Lopaka é a biblioteca de desenho ou o runtime de destino que recebe o código gerado. Selecionar uma plataforma faz três coisas:
- Restringe o editor ao modelo de cor e às fontes que a biblioteca de destino entende.
- Comanda o gerador de código — cada plataforma produz sua própria sintaxe e declarações.
- Determina quais configurações de código estão disponíveis (função wrapper, declarações de variáveis, formato de exportação de imagens etc.).
A plataforma é escolhida quando você cria um projeto e não pode ser alterada depois: Configurações do projeto a exibe como somente leitura. Para mirar outra biblioteca, crie um novo projeto com essa plataforma.
Escolher uma plataforma
- OLED / LCD monocromático (SSD1306, SH1106, SSD1309) — U8g2 ou AdafruitGFX Mono
- TFT colorido (ILI9341, ST7789, GC9A01) — TFT_eSPI, ArduinoGFX ou AdafruitGFX Color
- Interface de toque rica em ESP32/STM32 — LVGL
- Flipper Zero / One — plataforma Flipper
- Dispositivo de casa inteligente ESPHome — ESPHome
- Display e-paper — GxEPD2
- RP2040 / ESP32 com MicroPython — MicroPython
- Placa CircuitPython — CircuitPython
- Maquete ou somente exportar imagem — Desenho livre
Comparação de plataformas
| Plataforma | Saída | Modelo de cor | Fontes | Imagens |
|---|---|---|---|---|
| U8g2 | C / C++ | Monocromático (1 bit) | BDF (conjunto grande) | XBMP |
| TFT_eSPI / M5 / Lovyan | C++ | RGB565 | GFX | XBMP, RGB565 |
| AdafruitGFX Color | C++ | RGB565 | GFX | XBMP, RGB565 |
| AdafruitGFX Mono | C++ | Monocromático (1 bit) | GFX | XBMP |
| ArduinoGFX | C++ | RGB565 | GFX | XBMP, RGB565 |
| LVGL | C | RGB + alfa | Montserrat (TTF) | RGB565 |
| Flipper Zero / One | C | Monocromático (1 bit) | 4 fontes fixas | XBMP |
| ESPHome | YAML + lambda C++ | RGB | Google Fonts (TTF) | XBMP |
| MicroPython | Python | Monocromático (1 bit) | Fixa (Petme 8×8) | Buffer bruto |
| CircuitPython | Python | RGB | Terminus (BDF) | Buffer bruto |
| GxEPD2 | C++ | Paleta indexada | GFX | XBMP |
| Desenho livre | — | RGB | Todas as fontes | — |
Ferramentas de desenho
As ferramentas que aparecem na barra de ferramentas dependem da plataforma ativa. A LVGL recebe um conjunto baseado em widgets; todas as outras plataformas compartilham um conjunto de desenho de primitivas com pequenas variações.
| Ferramenta | U8g2 | TFT_eSPI | AdaGFX | AdaMono | ArduGFX | LVGL | Flipper | ESPHome | µPy | CPy | GxEPD2 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Linha | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | ✅ | ✅ | ✅ |
| Retângulo | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | ✅ | ✅ | ✅ |
| Círculo | — | — | ✅ | ✅ | — | — | ✅ | ✅ | — | ✅ | ✅ |
| Elipse | ✅ | ✅ | — | — | ✅ | — | — | — | ✅ | — | — |
| Triângulo | ✅ | ✅ | ✅ | ✅ | ✅ | — | — | ✅ | ✅ | ✅ | ✅ |
| Polígono | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | ✅ | ✅ | — |
| Arco | — | ✅ | — | — | — | — | — | — | — | — | — |
| Arco LVGL | — | — | — | — | — | ✅ | — | — | — | — | — |
| Texto | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Pintar | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Painel | — | — | — | — | — | ✅ | — | — | — | — | — |
| Botão | — | — | — | — | — | ✅ | — | — | — | — | — |
| Controle deslizante | — | — | — | — | — | ✅ | — | — | — | — | — |
| Interruptor | — | — | — | — | — | ✅ | — | — | — | — | — |
| Caixa de seleção | — | — | — | — | — | ✅ | — | — | — | — | — |
| Área de texto | — | — | — | — | — | ✅ | — | — | — | — | — |
Rotação de texto
U8g2, Flipper Zero / One, CircuitPython e LVGL oferecem suporte à rotação nativa de texto em 0°, 90°, 180° ou 270°. Selecione uma camada de texto e use os botões de rotação no Inspetor.
Plataformas
U8g2
Mira a biblioteca de displays monocromáticos U8g2. Gera código C++ (Arduino) ou C (ESP-IDF).
Para um passo a passo completo de configuração e integração, consulte o guia da U8g2.
Cor: binária — branco (1) ou preto (0). Modo de cor invertida disponível.
Fontes: grande biblioteca de fontes BDF incluída. Os nomes das fontes compilam para u8g2_font_<name>_tr.
Imagens: bitmaps XBMP declarados como arrays image_<Name>_bits (U8X8_PROGMEM no Arduino) ou extraídos para um arquivo de recurso .h para download.
Animações: animações monocromáticas integradas são compatíveis.
Modelos: Arduino (C++) e ESP-IDF (C) — cada um com um alternador progmem.
Inspetor: o seletor de cores fica oculto — a cor é sempre binária (definida pela lógica de preenchimento/inversão, não por um campo de cor). As camadas de triângulo seguem a primitiva da U8g2 e são sempre preenchidas, então nenhum alternador de preenchimento é exibido para elas.
Limitações: sem RGB. Sem tamanhos de fonte personalizados — o tamanho da fonte é determinado pelo arquivo BDF.
TFT_eSPI / M5 / Lovyan
Cobre TFT_eSPI, M5Stack GFX e LovyanGFX — todas compartilham a mesma superfície de API.
Para um passo a passo completo de configuração e integração, consulte o guia da TFT_eSPI.
Cor: RGB completo, empacotado como RGB565 (0xRRGG).
Fontes: Adafruit integrada e também fontes GFX. Fontes TrueType personalizadas (.ttf, .otf, .woff) e fontes BDF podem ser enviadas e são convertidas para o formato GFX na importação.
Imagens: arrays de pixels XBMP (1 bit) ou RGB565 (image_<Name>_bits / image_<Name>_pixels), em linha ou como arquivos de recurso .h para download. Os pixels transparentes são preenchidos com o fundo da tela, a menos que a opção Transparência da imagem esteja ativada; nesse caso, uma máscara de um bit os mantém translúcidos (tft.pushMaskedImage).
Arcos: a ferramenta Arco gera arcos no estilo TFT_eSPI com cores de primeiro plano e de fundo, ângulos e largura configuráveis e bordas suaves opcionais.
Modelos: Arduino (C++) ou ESP-IDF (C++). O modelo ESP-IDF dispensa PROGMEM, millis() e setup() / loop() e cronometra as animações com esp_timer_get_time().
Limitações: somente RGB565 — sem alfa parcial: um pixel transparente é totalmente translúcido (com Transparência ativada) ou preenchido. A posição Y das fontes GFX é ajustada automaticamente; verifique o alinhamento ao usar várias fontes.
AdafruitGFX Color
Mira a Biblioteca Adafruit GFX em displays coloridos.
Cor: RGB565.
Fontes: Adafruit integrada e também fontes GFX. Fontes TrueType personalizadas (.ttf, .otf, .woff) e fontes BDF podem ser enviadas e são convertidas para o formato GFX na importação.
Imagens: arrays de pixels XBMP ou RGB565 (image_<Name>_bits / image_<Name>_pixels), em linha ou como arquivos de recurso .h para download. Os pixels transparentes são preenchidos com o fundo da tela, a menos que a opção Transparência da imagem esteja ativada; nesse caso, uma máscara de um bit os mantém translúcidos (drawRGBBitmap com uma máscara).
Animações: animações monocromáticas integradas são compatíveis.
Modelos: Arduino (C++) ou ESP-IDF (C++). O modelo ESP-IDF dispensa PROGMEM, millis() e setup() / loop() e cronometra as animações com esp_timer_get_time().
Limitações: declarações de fontes duplicadas não são deduplicadas — verifique a saída se você usar a mesma fonte em muitas camadas.
AdafruitGFX Mono
O mesmo que o AdafruitGFX Color, mas para displays OLED/LCD monocromáticos (SSD1306, SH1106 etc.).
Cor: binária — 1 (branco) ou 0 (preto). A paleta é fixa em #000000 / #ffffff.
Fontes: a mesma biblioteca de fontes GFX do AdafruitGFX Color
Limpeza da tela: chama clearDisplay() em vez de fillScreen().
Animações: animações monocromáticas integradas são compatíveis.
Modelos: Arduino (C++) ou ESP-IDF (C++). O modelo ESP-IDF dispensa PROGMEM, millis() e setup() / loop() e cronometra as animações com esp_timer_get_time().
Limitações: sem RGB. Sem escala de cinza.
ArduinoGFX
Mira a Arduino_GFX.
Cor: RGB565, codificação com o byte alto primeiro (difere da ordem de byte baixo da Adafruit).
Fontes: Adafruit integrada e também fontes GFX com fator de escala personalizado. Fontes TrueType personalizadas (.ttf, .otf, .woff) e fontes BDF podem ser enviadas e são convertidas para o formato GFX na importação.
Imagens: arrays de pixels XBMP ou RGB565 (image_<Name>_bits / image_<Name>_pixels), em linha ou como arquivos de recurso .h para download. Os pixels transparentes são preenchidos com o fundo da tela, a menos que a opção Transparência da imagem esteja ativada; nesse caso, uma máscara de um bit os mantém translúcidos (draw16bitRGBBitmapWithMask).
Modelos: Arduino (C++) ou ESP-IDF (C++). O modelo ESP-IDF dispensa PROGMEM, millis() e setup() / loop() e cronometra as animações com esp_timer_get_time().
Limitações: as mesmas restrições RGB565 da TFT_eSPI. A incompatibilidade de ordem de bytes com a Adafruit produzirá cores erradas se você copiar bitmaps entre as duas plataformas.
LVGL
Mira a LVGL — uma biblioteca de GUI embarcada rica em recursos.
Cor: RGB completo. As imagens RGB mantêm seus pixels transparentes por meio de um plano alfa (RGB565A8) quando a opção Transparência da imagem está ativada. As cores são codificadas como lv_color_hex(0xRRGGBB).
Fontes: Montserrat TTF em tamanhos arbitrários.
Widgets: oferece suporte a painéis, botões, controles deslizantes, interruptores, caixas de seleção, áreas de texto e widgets Arco LVGL, além de formas primitivas. Os padrões dos widgets (raio, borda, cor de fundo) correspondem aos padrões da LVGL v9.
Renderizador: usa renderização suave (com antisserrilhamento) da tela de desenho no editor para aproximar a saída da LVGL.
Imagens: descritores de imagem RGB565 (lv_image_dsc_t) compatíveis com a v9, para download como um arquivo de recurso <Name>.c.
Limitações:
- Somente a Montserrat está disponível no seletor de fontes
- Widgets personalizados não são compatíveis — cada camada corresponde a uma única chamada
lv_obj_create - O código gerado mira a API C da LVGL (v9)
Flipper Zero / One
Mira a API de tela de desenho da GUI do Flipper Zero e do Flipper One (canvas_draw_*).
Cor: monocromática. A cor de desenho padrão é preto sobre fundo laranja no editor.
Fontes: somente quatro fontes fixas — FontPrimary (Helvetica 8 negrito), FontSecondary (Haxrcorp 4089), FontKeyboard (ProFont 11), FontBigNumbers (ProFont 22). Sem tamanhos de fonte personalizados.
Predefinições de display: Zero Horizontal (128×64), Zero Vertical (64×128), One Horizontal (256×144), One Vertical (144×256).
Imagens: bitmaps XBMP (image_<Name>_bits), em linha ou como um arquivo de recurso .h independente para download com arrays uint8_t.
Animações: animações monocromáticas integradas e importadas são compatíveis. A saída gerada inclui auxiliares de reprodução e cabeçalhos C para download com os quadros XBM.
Limitações:
- Monocromático
- Sem fontes personalizadas
ESPHome
Mira a lambda do componente de display do ESPHome.
Para um passo a passo completo, do design à gravação, consulte o guia do ESPHome.
Saída: YAML com lambdas C++ incorporadas. O editor Ace usa destaque de sintaxe YAML.
Cor: RGB completo codificado como Color(R, G, B).
Fontes: Google Fonts via gfonts:// e outras fontes TTF. As declarações de fontes vão para a chave YAML de nível superior font:.
Imagens: recursos PNG para download (<Name>.png) referenciados pelo YAML como images/<Name>.png e declarados como imagens BINARY. Coloque os arquivos PNG em uma pasta images/ ao lado do YAML.
Sem cantos arredondados: a API de display do ESPHome não tem uma primitiva de retângulo arredondado.
Limitações: somente XBMP — sem exportação de bitmap RGB. Os blocos font: e image: precisam estar na raiz do YAML, não dentro da string lambda:.
MicroPython
Mira o módulo framebuf do MicroPython em RP2040, ESP32 e similares.
Driver: o código gerado espera o driver PerfecXX MicroPython-SSD1306, cujo objeto display expõe seu framebuffer como display.framebuf e adiciona display.polygon. As elipses são desenhadas com display.framebuf.ellipse(...), então a pré-visualização do editor corresponde ao dispositivo pixel a pixel. O ssd1306.py padrão da micropython-lib não tem display.framebuf e falha em elipses, triângulos e polígonos.
Saída: Python. O editor Ace usa destaque de sintaxe Python.
Cor: monocromática — 1 (branco) ou 0 (preto). A paleta é fixa em preto e branco.
Fontes: uma única fonte integrada (Petme 8×8). O seletor de fontes não está disponível.
Imagens: buffers bytearray brutos (1 bit empacotado, por linhas), ou um recurso .pbm para download (image_<Name>_bits.pbm) que Incluir arquivos de imagem carrega na inicialização.
Limitações:
- Monocromático
- Somente a fonte integrada Petme 8×8 está disponível
- Cantos arredondados não são compatíveis
- Primitivas de desenho limitadas em comparação com outras plataformas.
- Triângulos são somente contorno.
CircuitPython
Mira a pilha displayio e vectorio do CircuitPython.
Saída: Python. O editor Ace usa destaque de sintaxe Python.
Cor: RGB, codificado como hexadecimal de 24 bits (0xRRGGBB).
Fontes: fonte BDF Terminus incluída. O seletor de fontes não é exibido na interface — a escolha da fonte é fixa.
Imagens: recursos displayio.OnDiskBitmap (image_<Name>_bits.bmp) carregados do sistema de arquivos do dispositivo.
Limitações:
- a fonte é fixa na BDF Terminus
- Os pixels das imagens ficam nos arquivos
.bmpbaixados — copie-os para ao lado do seu código
GxEPD2
Mira a biblioteca de displays e-paper GxEPD2. Estende a AdafruitGFX.
Cor: paleta indexada de 9 constantes nomeadas — GxEPD_BLACK, GxEPD_WHITE, GxEPD_DARKGREY, GxEPD_LIGHTGREY, GxEPD_RED, GxEPD_YELLOW, GxEPD_BLUE, GxEPD_GREEN, GxEPD_ORANGE. Cores fora dessa paleta correspondem a GxEPD_BLACK.
Fontes: Adafruit integrada e também fontes GFX (herda da plataforma Adafruit). Fontes TrueType personalizadas (.ttf, .otf, .woff) e fontes BDF podem ser enviadas e são convertidas para o formato GFX na importação.
Imagens: somente XBMP, para download como um arquivo de recurso .h.
Fundo: fundo cinza claro (#f8f8f8) no editor para aproximar o branco do e-paper.
Limitações: a paleta é fixa — sem cores hexadecimais arbitrárias. Os modos de atualização parcial e de atualização não são modelados no editor.
Desenho livre
Um modo somente de design, sem exportação de código. Útil para maquetes e para compartilhar designs sem mirar uma biblioteca específica.
Cor: RGB completo.
Fontes: todas as fontes TTF, BDF e GFX estão disponíveis.
Código: sem saída. O painel de código fica vazio.
Limitações: não pode ser usado para geração de código. Sem suporte à importação.