Que configuração um OLED SSD1306 precisa?
Colunas por página · LSB primeiro Colunas por página, LSB primeiro, pixel aceso = 1 — quando você grava os bytes direto na memória do display.
Converta texto em chinês ou inglês e imagens em arrays C para SSD1306, SH1106, ST7920 e Adafruit GFX. Fontes pixel nítidas de 12×12 e 16×16, os 4 modos de varredura do PCtoLCD2002 e um decodificador.
Fontes do sistema são contornos com antialiasing, então abaixo de uns 20 px os traços quebram ou se fundem. Para 12 e 16 px, use as fontes pixel acima.
Arraste uma imagem para cá ou clique para procurar
PNG, JPG, GIF, BMP, WebP ou SVG — um logo, ícone ou captura de tela
Os pixels escuros da imagem viram pixels acesos no display. Áreas transparentes contam como fundo.
Pegou um array de fonte de um projeto antigo ou de um tutorial e não sabe como ele foi gerado? Cole aqui: todas as direções de varredura e ordens de bits são desenhadas lado a lado, e a que aparece legível revela a configuração.
Compatível com a memória por páginas de SSD1306 / SSD1309 / SH1106 / ST7565 e com MicroPython framebuf.MONO_VLSB — grave os bytes direto no display.
Pixel aceso = 1, glifo da GNU Unifont. Compare estes bytes com o seu array para saber com que configuração ele foi gerado.
| Direção de varredura | Ordem dos bits | Bytes (hex) |
|---|---|---|
| Linha por linha (bytes horizontais) | MSB primeiro — primeiro pixel no bit 7 | 01 00 01 00 01 00 01 00 3F F8 21 08 21 08 21 08 21 08 21 08 3F F8 21 08 01 00 01 00 01 00 01 00 |
| Linha por linha (bytes horizontais) | LSB primeiro — primeiro pixel no bit 0 | 80 00 80 00 80 00 80 00 FC 1F 84 10 84 10 84 10 84 10 84 10 FC 1F 84 10 80 00 80 00 80 00 80 00 |
| Coluna por coluna (bytes verticais) | MSB primeiro — primeiro pixel no bit 7 | 00 00 00 00 0F F0 08 20 08 20 08 20 08 20 FF FF 08 20 08 20 08 20 08 20 0F F0 00 00 00 00 00 00 |
| Coluna por coluna (bytes verticais) | LSB primeiro — primeiro pixel no bit 0 | 00 00 00 00 F0 0F 10 04 10 04 10 04 10 04 FF FF 10 04 10 04 10 04 10 04 F0 0F 00 00 00 00 00 00 |
| Colunas por página (bytes verticais, ordem de página do SSD1306) | MSB primeiro — primeiro pixel no bit 7 | 00 00 0F 08 08 08 08 FF 08 08 08 08 0F 00 00 00 00 00 F0 20 20 20 20 FF 20 20 20 20 F0 00 00 00 |
| Colunas por página (bytes verticais, ordem de página do SSD1306) | LSB primeiro — primeiro pixel no bit 0 | 00 00 F0 10 10 10 10 FF 10 10 10 10 F0 00 00 00 00 00 0F 04 04 04 04 FF 04 04 04 04 0F 00 00 00 |
| Linhas por faixa (bytes horizontais, faixas de 8 pixels) | MSB primeiro — primeiro pixel no bit 7 | 01 01 01 01 3F 21 21 21 21 21 3F 21 01 01 01 01 00 00 00 00 F8 08 08 08 08 08 F8 08 00 00 00 00 |
| Linhas por faixa (bytes horizontais, faixas de 8 pixels) | LSB primeiro — primeiro pixel no bit 0 | 80 80 80 80 FC 84 84 84 84 84 FC 84 80 80 80 80 00 00 00 00 1F 10 10 10 10 10 1F 10 00 00 00 00 |
Fontes pixel: GNU Unifont (16 px) e Fusion Pixel Font (12 px), ambas sob a SIL Open Font License 1.1. Textos das licenças
Desenvolvido e verificado pela equipe de engenharia da Go Tools.
Colunas por página · LSB primeiro Colunas por página, LSB primeiro, pixel aceso = 1 — quando você grava os bytes direto na memória do display.
Linha por linha · MSB primeiro Linha por linha, MSB primeiro, pixel aceso = 1, com cada linha completada até bytes inteiros.
32 bytes 32 bytes em qualquer direção de varredura. Um de 12 × 12 tem 24 bytes; um caractere ASCII de 8 × 16 tem 16.
逆向 = LSB primeiro 顺向 ("sentido direto") = MSB primeiro (primeiro pixel no bit 7); 逆向 ("sentido inverso") = LSB primeiro (primeiro pixel no bit 0).
A maioria dos controladores gráficos de OLED e LCD — entre eles o SSD1306, o SH1106 e o ST7565 — não tem fonte embutida. Para mostrar um caractere, o firmware copia para a memória do display uma pequena grade de pixels acesos ou apagados, um bit por pixel, oito pixels por byte. Transformar um glifo nesses bytes é o que os tutoriais chineses de embarcados chamam de 取模 (literalmente, "extrair o molde" do caractere), o trabalho que o programa para Windows PCtoLCD2002 faz há anos.
Só os bytes não bastam. O mesmo caractere de 16 × 16 pode ser empacotado de quatro jeitos (linha por linha, coluna por coluna, colunas por página, linhas por faixa) e cada jeito pode colocar o primeiro pixel no bit 7 ou no bit 0. São oito sequências de bytes descrevendo o mesmo glifo, e um display desenha corretamente só uma delas. É por isso que uma fonte copiada de um tutorial aparece com tanta frequência espelhada, partida ao meio ou girada.
// 中 (16x16), pages of columns, LSB first, lit = 1 — SSD1306 page order
const unsigned char zhong[32] = {
0x00,0x00,0xF0,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0xF0,0x00,0x00,0x00,
0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x0F,0x00,0x00,0x00
};
// First 16 bytes = page 0 (rows 0-7), one byte per column, bit 0 = top row As fontes do navegador são contornos com antialiasing; com limiar a 12 px numa fonte Song, os traços horizontais de 中 simplesmente somem. Por isso esta ferramenta traz fontes bitmap de verdade: a de 16 × 16 cobre todos os 6.763 caracteres do GB2312, enquanto à de 12 × 12 faltam 143 caracteres raros, que são desenhados com uma fonte do sistema e sinalizados.
Linha por linha, coluna por coluna, colunas por página e linhas por faixa, cada um com MSB primeiro ou LSB primeiro e pixel aceso = 1 ou 0. Os nomes das opções seguem o PCtoLCD2002, e o significado delas foi conferido com o datasheet do SSD1306 e com projetos de exemplo de OLED comuns, então você pode escolher as mesmas configurações que um projeto existente usa.
Escolha SSD1306, Adafruit GFX ou XBM e as opções são ajustadas para você. Mude qualquer opção à mão e a ferramenta informa quais displays e bibliotecas leem essa ordem de bytes — ou que nenhum lê.
Cole um array de fonte de origem desconhecida e as oito leituras possíveis de varredura e ordem de bits são desenhadas lado a lado. A que fica legível revela a configuração; um clique a aplica.
Logos, ícones e fotos são redimensionados para o tamanho do seu display e convertidos por limiar, dithering Floyd–Steinberg ou Atkinson. Áreas transparentes contam como fundo, e o limiar funciona em todos os modos.
Arrays 2D no estilo C51 com comentários /*"中",0*/, Arduino PROGMEM com offsets, dicionários bytearray do MicroPython, linhas DB para A51 ou hexadecimal puro. O C gerado compila sem avisos com -Wall -Wextra -pedantic.
中
00 00 F0 10 10 10 10 FF 10 10 10 10 F0 00 00 00 00 00 0F 04 04 04 04 FF 04 04 04 04 0F 00 00 00
32 bytes: as 16 colunas da página 0 (linhas 0–7) e depois as 16 colunas da página 1 (linhas 8–15). No 0xFF da coluna 7 todos os bits estão ligados: o traço vertical atravessa as oito linhas das duas páginas.
中
01 00 01 00 01 00 01 00 3F F8 21 08 21 08 21 08 21 08 21 08 3F F8 21 08 01 00 01 00 01 00 01 00
Dois bytes por linha, 16 linhas. 0x01 0x00 é só o traço central: o pixel mais à esquerda é o bit 7 do primeiro byte, então o pixel da coluna 7 cai no bit 0. Mande esses bytes para um SSD1306 com escrita por página e o resultado é lixo — mesmo glifo, empacotamento diferente.
A
00 00 00 00 18 24 24 42 42 7E 42 42 42 42 00 00
Caracteres ASCII têm meia largura: 8 × 16 são 16 bytes, um byte por linha na varredura linha por linha. Marque "Dar largura total de célula aos caracteres de meia largura" se o seu driver espera que todo glifo tenha 16 × 16.
中 (12 × 12, linha por linha, MSB primeiro)
00 00 04 00 04 00 FF E0 84 20 84 20 84 20 FF E0 04 00 04 00 04 00 04 00
Cada linha de 12 pixels precisa de dois bytes; os quatro últimos bits do segundo byte são preenchimento. 12 linhas × 2 bytes = 24. Todas as bibliotecas de display endereçam uma linha como (largura + 7) / 8 bytes, então compactar mais os bits quebraria todas elas.
O texto usa uma fonte pixel de verdade: 12 × 12 (Fusion Pixel) ou 16 × 16 (GNU Unifont), com ASCII em meia largura. Para logos e ícones, mude para a aba Imagem e defina o tamanho de destino, como 128 × 64.
SSD1306 / SH1106 / ST7565 precisam de bytes verticais em ordem de página, com o pixel de cima no bit 0. Adafruit GFX, TFT_eSPI, U8g2 drawBitmap e LVGL precisam de bytes horizontais com o pixel da esquerda no bit 7. XBM / U8g2 drawXBM é igual, mas com o pixel da esquerda no bit 0.
A pré-visualização mostra exatamente o bitmap que é codificado. Clique em qualquer pixel para invertê-lo ou desloque o glifo com os campos de deslocamento.
Escolha C (estilo C51 do PCtoLCD2002), Arduino PROGMEM, bytearray do MicroPython, assembly A51 ou hexadecimal puro. A primeira linha da saída registra a direção de varredura, a ordem dos bits e o tamanho do glifo, então o array se documenta sozinho.
Bytes horizontais com a ordem de bits errada. Adafruit GFX drawBitmap() precisa de MSB primeiro; XBM e U8g2 drawXBM() precisam de LSB primeiro.
U8g2 drawXBM() recebendo bytes com MSB primeiro
drawXBM() → preset XBM (linha por linha, LSB primeiro)
Bytes verticais com a ordem de bits errada. Controladores do tipo SSD1306 colocam o D0 na linha de cima, então precisam de LSB primeiro.
Colunas por página, MSB primeiro → SSD1306
Colunas por página, LSB primeiro → SSD1306
Coluna por coluna e colunas por página foram confundidos. Eles só geram os mesmos bytes para glifos de até 8 pixels de altura; com 16 pixels, a ordem dos bytes muda.
Coluna por coluna → escrita por página no SSD1306
Colunas por página → escrita por página no SSD1306
Espelhamento na diagonal significa que bytes horizontais foram lidos como verticais (ou o contrário). Texto escuro sobre fundo aceso significa que aceso = 0 foi escolhido onde o display espera aceso = 1.
Bytes linha por linha enviados para uma página do SSD1306
Cole o array na aba do decodificador e escolha a pré-visualização legível
Ferramentas de Conversão
Converta números entre binário, hexadecimal, decimal, octal e qualquer base personalizada (2-36) instantaneamente. Gratuito, privado, sem cadastro — todo o processamento acontece no seu navegador.
Ferramentas de Conversão
Digite um inteiro com sinal e obtenha de uma vez sinal-magnitude, complemento de um, complemento de dois e binário deslocado, de 4 a 64 bits. Ou cole um padrão de bits ou byte hexadecimal e veja as cinco leituras.
Ferramentas de Conversão
Converta permissões de arquivos Linux entre octal (755, 644) e símbolos rwx. Gere comandos chmod e detecte ajustes arriscados como 777 — grátis, direto no seu navegador.
Ferramentas de Conversão
Converta HEX para RGB, HSL, OKLCH, OKLAB e CMYK no seu navegador — copie qualquer formato com um clique. Grátis, sem cadastro, suas cores nunca saem da página.
Ferramentas de Conversão
Converta coordenadas GPS de qualquer formato — graus decimais, graus minutos segundos (GMS) — para UTM, Web Mercator, GCJ-02 (AMap) e BD-09 (Baidu). Detecta lat,lng ou lng,lat, inverte o GCJ-02 abaixo de 1 mm e exporta CSV.
Ferramentas de Conversão
Converta cores HEX para CMYK no seu navegador. Aproximação ingênua baseada em sRGB para prévias de impressão. Grátis, sem cadastro, suas cores ficam locais.