¿Qué ajustes necesita un OLED SSD1306?
Columnas por página · LSB primero Columnas por página, LSB primero, píxel encendido = 1, cuando escribes los bytes directamente en la memoria de la pantalla.
Convierte texto en chino o en inglés e imágenes en arrays C para SSD1306, SH1106, ST7920 y Adafruit GFX. Fuentes pixel nítidas de 12×12 y 16×16, los 4 modos de escaneo de PCtoLCD2002 y un decodificador.
Las fuentes del sistema son contornos con antialiasing, así que por debajo de unos 20 px los trazos se rompen o se funden. Para 12 y 16 px usa las fuentes pixel de arriba.
Arrastra una imagen aquí o haz clic para buscarla
PNG, JPG, GIF, BMP, WebP o SVG: un logo, un icono o una captura de pantalla
Los píxeles oscuros de la imagen se convierten en píxeles encendidos en la pantalla. Las zonas transparentes cuentan como fondo.
¿Tienes un array de fuente de un proyecto antiguo o de un tutorial y no sabes cómo se generó? Pégalo aquí: se dibujan en paralelo todas las direcciones de escaneo y órdenes de bits, y la que se lee bien te da los ajustes.
Compatible con la memoria por páginas de SSD1306 / SSD1309 / SH1106 / ST7565 y con MicroPython framebuf.MONO_VLSB: escribe los bytes directamente en la pantalla.
Píxel encendido = 1, glifo de GNU Unifont. Compara estos bytes con tu array para saber con qué ajustes se generó.
| Dirección de escaneo | Orden de bits | Bytes (hex) |
|---|---|---|
| Fila a fila (bytes horizontales) | MSB primero: primer píxel en el 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 |
| Fila a fila (bytes horizontales) | LSB primero: primer píxel en el 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 |
| Columna a columna (bytes verticales) | MSB primero: primer píxel en el 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 |
| Columna a columna (bytes verticales) | LSB primero: primer píxel en el 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 |
| Columnas por página (bytes verticales, orden de páginas SSD1306) | MSB primero: primer píxel en el 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 |
| Columnas por página (bytes verticales, orden de páginas SSD1306) | LSB primero: primer píxel en el 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 |
| Filas por franja (bytes horizontales, franjas de 8 píxeles) | MSB primero: primer píxel en el 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 |
| Filas por franja (bytes horizontales, franjas de 8 píxeles) | LSB primero: primer píxel en el 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 |
Fuentes pixel: GNU Unifont (16 px) y Fusion Pixel Font (12 px), ambas bajo la SIL Open Font License 1.1. Textos de las licencias
Creado y verificado por el equipo de ingeniería de Go Tools.
Columnas por página · LSB primero Columnas por página, LSB primero, píxel encendido = 1, cuando escribes los bytes directamente en la memoria de la pantalla.
Fila a fila · MSB primero Fila a fila, MSB primero, píxel encendido = 1, con cada fila rellenada hasta bytes enteros.
32 bytes 32 bytes en cualquier dirección de escaneo. Un 12 × 12 ocupa 24 bytes y un carácter ASCII de 8 × 16, 16.
逆向 = LSB primero 顺向 («sentido directo») = MSB primero (primer píxel en el bit 7); 逆向 («sentido inverso») = LSB primero (primer píxel en el bit 0).
La mayoría de los controladores gráficos OLED y LCD —entre ellos el SSD1306, el SH1106 y el ST7565— no tienen fuente integrada. Para mostrar un carácter, el firmware copia en la memoria de la pantalla una pequeña rejilla de píxeles encendidos o apagados: un bit por píxel, ocho píxeles por byte. Convertir un glifo en esos bytes es lo que los tutoriales chinos de sistemas embebidos llaman 取模 («sacar el modelo» del carácter), la tarea que el programa de Windows PCtoLCD2002 lleva años haciendo.
Los bytes por sí solos no bastan. El mismo carácter de 16 × 16 puede empaquetarse de cuatro formas (fila a fila, columna a columna, columnas por página, filas por franja) y cada una puede poner el primer píxel en el bit 7 o en el bit 0. Ocho secuencias de bytes describen el mismo glifo y una pantalla solo dibuja bien una de ellas. Por eso una fuente copiada de un tutorial aparece tan a menudo en espejo, partida por la mitad o 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 Las fuentes del navegador son contornos con antialiasing; al umbralizarlas a 12 px en una tipografía Song, los trazos horizontales de 中 simplemente desaparecen. Por eso esta herramienta incluye fuentes bitmap reales: la de 16 × 16 cubre los 6.763 caracteres de GB2312, mientras que a la de 12 × 12 le faltan 143 poco comunes, que se dibujan con una fuente del sistema y quedan señalados.
Fila a fila, columna a columna, columnas por página y filas por franja, cada uno con MSB primero o LSB primero y píxel encendido = 1 o 0. Los nombres de las opciones siguen a PCtoLCD2002 y su significado se ha contrastado con la datasheet del SSD1306 y con proyectos de ejemplo OLED habituales, así que puedes elegir la misma configuración que usa un proyecto existente.
Elige SSD1306, Adafruit GFX o XBM y las opciones se ajustan solas. Si cambias una opción a mano, la herramienta te dice qué pantallas y librerías leen ese orden de bytes, o que ninguna lo hace.
Pega un array de fuente de origen desconocido y se dibujan en paralelo las ocho lecturas posibles de escaneo y orden de bits. La que se lee bien te da los ajustes; un clic los aplica.
Logos, iconos y fotos se escalan al tamaño de tu pantalla y se convierten con umbral, dithering Floyd–Steinberg o Atkinson. Las zonas transparentes cuentan como fondo y el umbral funciona en todos los modos.
Arrays 2D estilo C51 con comentarios /*"中",0*/, Arduino PROGMEM con offsets, diccionarios bytearray de MicroPython, líneas DB de A51 o hexadecimal plano. El C generado compila limpio con -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: las 16 columnas de la página 0 (filas 0–7) y después las 16 columnas de la página 1 (filas 8–15). En el 0xFF de la columna 7 están todos los bits activos: el trazo vertical recorre las ocho filas de ambas 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
Dos bytes por fila, 16 filas. 0x01 0x00 es solo el trazo central: el píxel más a la izquierda es el bit 7 del primer byte, así que el píxel de la columna 7 cae en el bit 0. Si mandas estos bytes a un SSD1306 con escritura por páginas, sale basura: el mismo glifo, otro empaquetado.
A
00 00 00 00 18 24 24 42 42 7E 42 42 42 42 00 00
Los caracteres ASCII son de media anchura: 8 × 16 son 16 bytes, un byte por fila al escanear fila a fila. Marca «Dar a los caracteres de media anchura el ancho completo de la celda» si tu driver espera que todos los glifos sean de 16 × 16.
中 (12 × 12, fila a fila, MSB primero)
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 fila de 12 píxeles necesita dos bytes; los cuatro últimos bits del segundo byte son relleno. 12 filas × 2 bytes = 24. Todas las librerías de pantalla direccionan las filas como (ancho + 7) / 8 bytes, así que empaquetar los bits más juntos las rompería a todas.
El texto usa una fuente pixel de verdad: 12 × 12 (Fusion Pixel) o 16 × 16 (GNU Unifont), con el ASCII a media anchura. Para logos e iconos, cambia a la pestaña Imagen y fija el tamaño de destino, por ejemplo 128 × 64.
SSD1306 / SH1106 / ST7565 necesitan bytes verticales en orden de página, con el píxel superior en el bit 0. Adafruit GFX, TFT_eSPI, U8g2 drawBitmap y LVGL necesitan bytes horizontales con el píxel izquierdo en el bit 7. XBM / U8g2 drawXBM es igual, pero con el píxel izquierdo en el bit 0.
La vista previa muestra exactamente el bitmap que se codifica. Haz clic en cualquier píxel para invertirlo, o desplaza el glifo con los campos de desplazamiento.
Elige C (estilo C51 de PCtoLCD2002), Arduino PROGMEM, bytearray de MicroPython, ensamblador A51 o hexadecimal plano. La primera línea de la salida registra la dirección de escaneo, el orden de bits y el tamaño del glifo, así que el array se documenta solo.
Bytes horizontales con el orden de bits equivocado. Adafruit GFX drawBitmap() necesita MSB primero; XBM y U8g2 drawXBM() necesitan LSB primero.
U8g2 drawXBM() recibe bytes con MSB primero
drawXBM() → preset XBM (fila a fila, LSB primero)
Bytes verticales con el orden de bits equivocado. Los controladores tipo SSD1306 ponen D0 en la fila superior, así que necesitan LSB primero.
Columnas por página, MSB primero → SSD1306
Columnas por página, LSB primero → SSD1306
Se han confundido columna a columna y columnas por página. Solo dan los mismos bytes con glifos de hasta 8 píxeles de alto; a 16 píxeles, el orden de los bytes cambia.
Columna a columna → escrituras por páginas del SSD1306
Columnas por página → escrituras por páginas del SSD1306
Un volteo diagonal significa que se leyeron bytes horizontales como verticales (o al revés). Texto oscuro sobre fondo encendido significa que se eligió encendido = 0 donde la pantalla espera encendido = 1.
Bytes fila a fila enviados a una página del SSD1306
Pega el array en la pestaña del decodificador y elige la vista previa legible
Herramientas de Conversión
Convierte números entre binario, hexadecimal, decimal, octal y cualquier base personalizada (2-36) al instante. Gratis, privado, sin registro — todo el procesamiento ocurre en tu navegador.
Herramientas de Conversión
Escribe un entero con signo y obtén de golpe signo-magnitud, complemento a uno, complemento a dos y binario desplazado, de 4 a 64 bits. O pega un patrón de bits o un byte hexadecimal y verás las cinco lecturas.
Herramientas de Conversión
Convierte permisos de archivos Linux entre octal (755, 644) y símbolos rwx. Obtén comandos chmod y detecta ajustes de riesgo como 777 — gratis, directo en tu navegador.
Herramientas de Conversión
Convierta HEX a RGB, HSL, OKLCH, OKLAB y CMYK en su navegador — copie cualquier formato con un clic. Gratis, sin registro, sus colores nunca salen de la página.
Herramientas de Conversión
Convierte coordenadas GPS en cualquier formato — grados decimales, grados minutos segundos (GMS) — a UTM, Web Mercator, GCJ-02 (AMap) y BD-09 (Baidu). Detecta lat,lng o lng,lat, lotes a CSV. En tu navegador.
Herramientas de Conversión
Convierta colores HEX a CMYK en su navegador. Aproximación ingenua basada en sRGB para vistas previas de imprenta. Gratis, sin registro, sus colores nunca salen de la página.