Quali impostazioni servono per un OLED SSD1306?
Colonne per pagina · LSB prima Colonne per pagina, LSB prima, pixel acceso = 1, quando scrivi i byte direttamente nella memoria del display.
Converti testo cinese o inglese e immagini in array C per SSD1306, SH1106, ST7920 e Adafruit GFX. Font pixel nitidi 12×12 e 16×16, tutte e 4 le modalità di scansione di PCtoLCD2002 e un decoder di array.
I font di sistema sono contorni con antialiasing, quindi sotto i 20 px circa i tratti si spezzano o si fondono. Per 12 e 16 px usa i font pixel qui sopra.
Trascina qui un'immagine o clicca per sfogliare
PNG, JPG, GIF, BMP, WebP o SVG: un logo, un'icona o uno screenshot
I pixel scuri dell'immagine diventano pixel accesi sul display. Le aree trasparenti contano come sfondo.
Hai un array di font preso da un vecchio progetto o da un tutorial e non sai come è stato generato? Incollalo qui: tutte le direzioni di scansione e gli ordini dei bit vengono disegnati affiancati, e quello leggibile ti dà le impostazioni.
Compatibile con la memoria a pagine di SSD1306 / SSD1309 / SH1106 / ST7565 e con MicroPython framebuf.MONO_VLSB: scrivi i byte direttamente sul display.
Pixel acceso = 1, glifo di GNU Unifont. Confronta questi byte con il tuo array per capire con quali impostazioni è stato generato.
| Direzione di scansione | Ordine dei bit | Byte (hex) |
|---|---|---|
| Riga per riga (byte orizzontali) | MSB prima — primo pixel nel 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 |
| Riga per riga (byte orizzontali) | LSB prima — primo pixel nel 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 |
| Colonna per colonna (byte verticali) | MSB prima — primo pixel nel 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 |
| Colonna per colonna (byte verticali) | LSB prima — primo pixel nel 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 |
| Colonne per pagina (byte verticali, ordine di pagina SSD1306) | MSB prima — primo pixel nel 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 |
| Colonne per pagina (byte verticali, ordine di pagina SSD1306) | LSB prima — primo pixel nel 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 |
| Righe per striscia (byte orizzontali, strisce da 8 pixel) | MSB prima — primo pixel nel 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 |
| Righe per striscia (byte orizzontali, strisce da 8 pixel) | LSB prima — primo pixel nel 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 |
Font pixel: GNU Unifont (16 px) e Fusion Pixel Font (12 px), entrambi con licenza SIL Open Font License 1.1. Testi delle licenze
Realizzato e verificato dal team di ingegneria di Go Tools.
Colonne per pagina · LSB prima Colonne per pagina, LSB prima, pixel acceso = 1, quando scrivi i byte direttamente nella memoria del display.
Riga per riga · MSB prima Riga per riga, MSB prima, pixel acceso = 1, con ogni riga completata a byte interi.
32 byte 32 byte in qualsiasi direzione di scansione. Un 12 × 12 occupa 24 byte, un carattere ASCII 8 × 16 ne occupa 16.
逆向 = LSB prima 顺向 ("verso diretto") = MSB prima (primo pixel nel bit 7); 逆向 ("verso inverso") = LSB prima (primo pixel nel bit 0).
La maggior parte dei controller grafici OLED e LCD, tra cui SSD1306, SH1106 e ST7565, non ha un font integrato. Per mostrare un carattere, il firmware copia nella memoria del display una piccola griglia di pixel accesi o spenti: un bit per pixel, otto pixel per byte. Trasformare un glifo in quei byte è ciò che i tutorial embedded cinesi chiamano 取模 (letteralmente "ricavare lo stampo" del carattere), il lavoro che il programma Windows PCtoLCD2002 svolge da anni.
I byte da soli non bastano. Lo stesso carattere 16 × 16 si può impacchettare in quattro modi (riga per riga, colonna per colonna, colonne per pagina, righe per striscia) e ognuno può mettere il primo pixel nel bit 7 o nel bit 0. Otto sequenze di byte descrivono lo stesso glifo, e un display ne disegna correttamente solo una. Ecco perché un font copiato da un tutorial compare così spesso specchiato, spezzato a metà o ruotato.
// 中 (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 I font del browser sono contorni con antialiasing: sogliati a 12 px in un carattere Song, i tratti orizzontali di 中 spariscono del tutto. Per questo lo strumento include veri font bitmap: il font 16 × 16 copre tutti i 6.763 caratteri GB2312, mentre a quello 12 × 12 ne mancano 143 rari, che vengono disegnati con un font di sistema e segnalati.
Riga per riga, colonna per colonna, colonne per pagina e righe per striscia, ciascuna con MSB prima o LSB prima e pixel acceso = 1 o 0. I nomi delle opzioni seguono PCtoLCD2002 e il loro significato è verificato sul datasheet dell'SSD1306 e sui progetti di esempio OLED più diffusi, così puoi scegliere le stesse impostazioni usate da un progetto esistente.
Scegli SSD1306, Adafruit GFX o XBM e le opzioni si impostano da sole. Se modifichi un'opzione a mano, lo strumento ti dice quali display e librerie leggono quell'ordine dei byte, oppure che nessuno lo fa.
Incolla un array di font di origine sconosciuta: tutte e otto le letture possibili di scansione e ordine dei bit vengono disegnate affiancate. Quella leggibile ti dà le impostazioni; un clic le applica.
Loghi, icone e foto vengono scalati alla dimensione del tuo display e convertiti con soglia, dithering Floyd–Steinberg o Atkinson. Le aree trasparenti contano come sfondo e la soglia funziona in tutte le modalità.
Array 2D in stile C51 con commenti /*"中",0*/, Arduino PROGMEM con offset, dizionari bytearray MicroPython, righe DB per A51 o esadecimale semplice. Il C generato compila senza warning 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 byte: le 16 colonne della pagina 0 (righe 0–7), poi le 16 colonne della pagina 1 (righe 8–15). Nello 0xFF della colonna 7 tutti i bit sono a 1: il tratto verticale attraversa tutte e otto le righe di entrambe le pagine.
中
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
Due byte per riga, 16 righe. 0x01 0x00 è il solo tratto centrale: il pixel più a sinistra è il bit 7 del primo byte, quindi il pixel della colonna 7 finisce nel bit 0. Se mandi questi byte a un SSD1306 con una scrittura per pagina ottieni spazzatura: stesso glifo, impacchettamento diverso.
A
00 00 00 00 18 24 24 42 42 7E 42 42 42 42 00 00
I caratteri ASCII sono a mezza larghezza: 8 × 16 fa 16 byte, un byte per riga con la scansione riga per riga. Spunta "Dai ai caratteri a mezza larghezza l'intera larghezza della cella" se il tuo driver si aspetta che ogni glifo sia 16 × 16.
中 (12 × 12, riga per riga, MSB prima)
00 00 04 00 04 00 FF E0 84 20 84 20 84 20 FF E0 04 00 04 00 04 00 04 00
Ogni riga da 12 pixel richiede due byte; gli ultimi quattro bit del secondo byte sono di riempimento. 12 righe × 2 byte = 24. Tutte le librerie per display indirizzano le righe come (larghezza + 7) / 8 byte, quindi compattare di più i bit le manderebbe tutte in errore.
Il testo usa un vero font pixel: 12 × 12 (Fusion Pixel) o 16 × 16 (GNU Unifont), con l'ASCII a mezza larghezza. Per loghi e icone passa alla scheda Immagine e imposta la dimensione di destinazione, per esempio 128 × 64.
SSD1306 / SH1106 / ST7565 vogliono byte verticali in ordine di pagina, con il pixel in alto nel bit 0. Adafruit GFX, TFT_eSPI, U8g2 drawBitmap e LVGL vogliono byte orizzontali con il pixel a sinistra nel bit 7. XBM / U8g2 drawXBM è uguale, ma con il pixel a sinistra nel bit 0.
L'anteprima mostra esattamente la bitmap che viene codificata. Clicca su un pixel per invertirlo, oppure sposta il glifo con i campi di spostamento.
Scegli C (stile C51 di PCtoLCD2002), Arduino PROGMEM, bytearray MicroPython, assembly A51 o esadecimale semplice. La prima riga dell'output riporta direzione di scansione, ordine dei bit e dimensione del glifo: l'array si documenta da solo.
Byte orizzontali con l'ordine dei bit sbagliato. Adafruit GFX drawBitmap() vuole MSB prima; XBM e U8g2 drawXBM() vogliono LSB prima.
U8g2 drawXBM() con byte MSB prima
drawXBM() → preset XBM (riga per riga, LSB prima)
Byte verticali con l'ordine dei bit sbagliato. I controller tipo SSD1306 mettono D0 nella riga in alto, quindi vogliono LSB prima.
Colonne per pagina, MSB prima → SSD1306
Colonne per pagina, LSB prima → SSD1306
Colonna per colonna e colonne per pagina sono state confuse. Danno gli stessi byte solo per glifi alti al massimo 8 pixel; a 16 pixel l'ordine dei byte cambia.
Colonna per colonna → scritture per pagina sull'SSD1306
Colonne per pagina → scritture per pagina sull'SSD1306
Un ribaltamento diagonale significa che byte orizzontali sono stati letti come verticali (o viceversa). Testo scuro su sfondo acceso significa che è stato scelto acceso = 0 dove il display si aspetta acceso = 1.
Byte riga per riga inviati a una pagina dell'SSD1306
Incolla l'array nella scheda del decoder e scegli l'anteprima leggibile
Strumenti di conversione
Converti istantaneamente tra binario, esadecimale, decimale, ottale e qualsiasi base (2-36). Strumento online gratuito e privato: tutta l'elaborazione avviene nel tuo browser.
Strumenti di conversione
Digita un intero con segno e ottieni insieme modulo e segno, complemento a uno, complemento a due e binario con offset, da 4 a 64 bit. Oppure incolla dei bit o un byte esadecimale e leggi tutte e cinque le letture affiancate.
Strumenti di conversione
Converti i permessi file Linux tra ottale (755, 644) e simboli rwx online: comandi chmod pronti, avvisi sui modi rischiosi come 777, 100% nel browser.
Strumenti di conversione
Converte HEX in RGB, HSL, OKLCH, OKLAB e CMYK direttamente nel browser — basta un clic per copiare qualsiasi formato. Gratuito, senza registrazione, i colori non lasciano mai la pagina.
Strumenti di conversione
Converti coordinate GPS in qualsiasi formato — gradi decimali, gradi minuti secondi (GMS) — in UTM, Web Mercator, GCJ-02 (AMap) e BD-09 (Baidu). Riconosce lat,lng o lng,lat, conversione in blocco in CSV. Nel browser.
Strumenti di conversione
Converte colori HEX in CMYK direttamente nel browser. Approssimazione ingenua basata su sRGB per proof di stampa. Gratuito, online, senza registrazione, i colori non lasciano mai la pagina.