Welke instellingen heeft een SSD1306-OLED nodig?
Kolommen per pagina · LSB eerst Kolommen per pagina, LSB eerst, pixel aan = 1 – als je de bytes rechtstreeks in het displaygeheugen schrijft.
Zet tekst en afbeeldingen om naar C-arrays voor SSD1306, SH1106, ST7920 en Adafruit GFX. Scherpe pixelfonts van 12×12 en 16×16, alle vier scanmodi van PCtoLCD2002 en een decoder voor onbekende arrays.
Systeemfonts zijn anti-aliased contouren, dus onder ongeveer 20 px breken streken af of lopen ze in elkaar over. Gebruik voor 12 en 16 px de pixelfonts hierboven.
Sleep een afbeelding hierheen of klik om te bladeren
PNG, JPG, GIF, BMP, WebP of SVG – een logo, icoon of screenshot
Donkere pixels van de afbeelding worden pixels die aan staan op het display. Transparante delen tellen als achtergrond.
Heb je een fontarray uit een oud project of een tutorial en weet je niet hoe hij gegenereerd is? Plak hem hier: elke scanrichting en bitvolgorde wordt naast elkaar getekend, en de leesbare verraadt de instellingen.
Past bij het pagina-geheugen van SSD1306 / SSD1309 / SH1106 / ST7565 en MicroPython framebuf.MONO_VLSB – schrijf de bytes rechtstreeks naar het display.
Pixel aan = 1, glyph uit GNU Unifont. Vergelijk deze bytes met je eigen array om te zien met welke instellingen die gemaakt is.
| Scanrichting | Bitvolgorde | Bytes (hex) |
|---|---|---|
| Rij voor rij (horizontale bytes) | MSB eerst — eerste pixel in 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 |
| Rij voor rij (horizontale bytes) | LSB eerst — eerste pixel in 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 |
| Kolom voor kolom (verticale bytes) | MSB eerst — eerste pixel in 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 |
| Kolom voor kolom (verticale bytes) | LSB eerst — eerste pixel in 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 |
| Kolommen per pagina (verticale bytes, SSD1306-paginavolgorde) | MSB eerst — eerste pixel in 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 |
| Kolommen per pagina (verticale bytes, SSD1306-paginavolgorde) | LSB eerst — eerste pixel in 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 |
| Rijen per strook (horizontale bytes, stroken van 8 pixels) | MSB eerst — eerste pixel in 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 |
| Rijen per strook (horizontale bytes, stroken van 8 pixels) | LSB eerst — eerste pixel in 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 |
Pixelfonts: GNU Unifont (16 px) en Fusion Pixel Font (12 px), beide onder de SIL Open Font License 1.1. Licentieteksten
Gebouwd en geverifieerd door het engineeringteam van Go Tools.
Kolommen per pagina · LSB eerst Kolommen per pagina, LSB eerst, pixel aan = 1 – als je de bytes rechtstreeks in het displaygeheugen schrijft.
Rij voor rij · MSB eerst Rij voor rij, MSB eerst, pixel aan = 1, elke rij aangevuld tot hele bytes.
32 bytes 32 bytes in elke scanrichting. 12 × 12 is 24 bytes, een ASCII-teken van 8 × 16 is 16.
逆向 = LSB eerst 顺向 = MSB eerst (eerste pixel in bit 7); 逆向 = LSB eerst (eerste pixel in bit 0).
De meeste grafische OLED- en LCD-controllers – waaronder de SSD1306, SH1106 en ST7565 – hebben geen ingebouwd font. Om een teken te tonen kopieert de firmware een klein raster van pixels (aan/uit) naar het displaygeheugen: één bit per pixel, acht pixels per byte. Een glyph omzetten naar die bytes heet in Chinese embedded-tutorials 取模 – het werk dat het Windows-programma PCtoLCD2002 al jaren doet.
De bytes alleen zijn niet genoeg. Hetzelfde teken van 16 × 16 kun je op vier manieren inpakken (rij voor rij, kolom voor kolom, kolommen per pagina, rijen per strook) en elke manier kan de eerste pixel in bit 7 of in bit 0 zetten. Acht bytereeksen beschrijven hetzelfde glyph, en een display tekent er maar één correct. Daarom verschijnt een font dat je uit een tutorial kopieert zo vaak gespiegeld, in tweeën gesplitst of gedraaid.
// 中 (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 Browserfonts zijn anti-aliased contouren; met een drempelwaarde op 12 px in een Song-lettertype verdwijnen de horizontale streken van 中 gewoon. Daarom levert deze tool echte bitmapfonts: het 16 × 16-font dekt alle 6.763 GB2312-tekens, het 12 × 12-font mist 143 zeldzame tekens, die met een systeemfont worden getekend en gemarkeerd.
Rij voor rij, kolom voor kolom, kolommen per pagina en rijen per strook, telkens MSB eerst of LSB eerst, pixel aan = 1 of 0. De optienamen volgen PCtoLCD2002 en hun betekenis is gecontroleerd aan de hand van de SSD1306-datasheet en gangbare OLED-voorbeeldprojecten, zodat je dezelfde instellingen kunt kiezen als een bestaand project.
Kies SSD1306, Adafruit GFX of XBM en de opties worden voor je ingesteld. Pas je een optie met de hand aan, dan vertelt de tool welke displays en libraries die bytevolgorde lezen – of dat er geen enkele is.
Plak een fontarray van onbekende herkomst en alle acht lezingen van scanrichting en bitvolgorde worden naast elkaar getekend. De leesbare verraadt de instellingen; één klik neemt ze over.
Logo's, iconen en foto's worden geschaald naar je displaygrootte en omgezet met een drempelwaarde, Floyd–Steinberg- of Atkinson-dithering. Transparante delen tellen als achtergrond, en de drempelwaarde werkt in elke modus.
2D-arrays in C51-stijl met /*"中",0*/ als commentaar, Arduino PROGMEM met offsets, MicroPython-bytearray-dictionaries, A51-DB-regels of kale hex. De gegenereerde C compileert zonder waarschuwingen met -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: 16 kolommen van pagina 0 (rijen 0–7), daarna 16 kolommen van pagina 1 (rijen 8–15). In de 0xFF op kolom 7 staat elke bit aan: de verticale streek loopt door alle acht rijen van beide pagina's.
中
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
Twee bytes per rij, 16 rijen. 0x01 0x00 is alleen de middelste streek: de meest linkse pixel is bit 7 van de eerste byte, dus de pixel in kolom 7 komt in bit 0 terecht. Stuur je deze bytes met een page-write naar een SSD1306, dan krijg je pixelbrij – hetzelfde glyph, anders ingepakt.
A
00 00 00 00 18 24 24 42 42 7E 42 42 42 42 00 00
ASCII-tekens zijn half zo breed: 8 × 16 is 16 bytes, één byte per rij bij rij-voor-rij-scannen. Vink “Halfbrede tekens (A–Z, 0–9) de volle celbreedte geven” aan als je driver voor elk glyph 16 × 16 verwacht.
中 (12 × 12, rij voor rij, MSB eerst)
00 00 04 00 04 00 FF E0 84 20 84 20 84 20 FF E0 04 00 04 00 04 00 04 00
Elke rij van 12 pixels heeft twee bytes nodig; de laatste vier bits van de tweede byte zijn opvulling. 12 rijen × 2 bytes = 24. Elke displaylibrary adresseert rijen als (width + 7) / 8 bytes, dus strakker ingepakte bits zouden ze allemaal in de war brengen.
Tekst gebruikt een echt pixelfont: 12 × 12 (Fusion Pixel) of 16 × 16 (GNU Unifont), met ASCII op halve breedte. Voor logo's en iconen schakel je over naar het tabblad Afbeelding en stel je de doelgrootte in, bijvoorbeeld 128 × 64.
SSD1306 / SH1106 / ST7565 willen verticale bytes in paginavolgorde met de bovenste pixel in bit 0. Adafruit GFX, TFT_eSPI, U8g2 drawBitmap en LVGL willen horizontale bytes met de linkerpixel in bit 7. XBM / U8g2 drawXBM is hetzelfde, maar met de linkerpixel in bit 0.
De preview toont precies de bitmap die wordt geëncodeerd. Klik op een pixel om hem om te zetten, of schuif het glyph op zijn plek met de verschuifvelden.
Kies C (C51-stijl van PCtoLCD2002), Arduino PROGMEM, MicroPython bytearray, A51-assembly of kale hex. De eerste regel van de uitvoer legt scanrichting, bitvolgorde en glyphgrootte vast, zodat de array zichzelf documenteert.
Horizontale bytes met de verkeerde bitvolgorde. Adafruit GFX drawBitmap() wil MSB eerst; XBM en U8g2 drawXBM() willen LSB eerst.
U8g2 drawXBM() krijgt bytes met MSB eerst
drawXBM() → XBM-voorinstelling (rij voor rij, LSB eerst)
Verticale bytes met de verkeerde bitvolgorde. Controllers van het type SSD1306 zetten D0 in de bovenste rij en hebben dus LSB eerst nodig.
Kolommen per pagina, MSB eerst → SSD1306
Kolommen per pagina, LSB eerst → SSD1306
Kolom voor kolom en kolommen per pagina verwisseld. Ze geven alleen dezelfde bytes bij glyphs tot 8 pixels hoog; bij 16 pixels verschilt de bytevolgorde.
Kolom voor kolom → page-writes naar SSD1306
Kolommen per pagina → page-writes naar SSD1306
Een spiegeling langs de diagonaal betekent dat horizontale bytes als verticale zijn gelezen (of andersom). Donkere tekst op een lichte achtergrond betekent dat pixel aan = 0 is gekozen waar het display pixel aan = 1 verwacht.
Rij-voor-rij-bytes naar een SSD1306-pagina gestuurd
Plak de array in het decodertabblad en kies de leesbare preview
Omrekentools
Reken je getal direct om tussen binair, hex, decimaal, octaal en elk talstelsel (2-36). Gratis en privé — alles draait in je browser.
Omrekentools
Typ een geheel getal met teken en krijg teken-magnitude, één-complement, twee-complement en offset-binair in één keer, van 4 tot 64 bit. Of plak bits of een hex-byte en lees alle vijf de interpretaties naast elkaar.
Omrekentools
Reken Linux-bestandsrechten om tussen octaal (755, 644) en rwx-symbolen. Genereer kant-en-klare chmod-commando's en herken riskante instellingen zoals 777 — gratis, alles draait in je browser.
Omrekentools
Converteer HEX naar RGB, HSL, OKLCH, OKLAB en CMYK in je browser — kopieer elk formaat met één klik. Gratis, geen account, je kleuren verlaten de pagina nooit.
Omrekentools
Coördinaten omrekenen in elk formaat — decimale graden, graden minuten seconden (DMS) — naar UTM, Web Mercator, GCJ-02 (AMap) en BD-09 (Baidu). Herkent lat,lng of lng,lat, rekent GCJ-02 terug tot onder 1 mm, batch naar CSV.
Omrekentools
Converteer HEX-kleuren naar CMYK in je browser. Naïeve sRGB-gebaseerde benadering voor printvoorbeelden. Gratis, geen account, je kleuren blijven lokaal.