Quels réglages pour un OLED SSD1306 ?
Colonnes par page · LSB en premier Colonnes par page, LSB en premier, pixel allumé = 1 — quand vous écrivez les octets directement dans la mémoire d'affichage.
Convertissez texte (chinois, latin) et images en tableaux C pour SSD1306, SH1106, ST7920 et Adafruit GFX. Polices pixel 12×12 et 16×16 nettes, les 4 modes de balayage PCtoLCD2002 et un décodeur de tableaux.
Les polices système sont des contours lissés : sous environ 20 px, les traits se cassent ou fusionnent. En 12 et 16 px, utilisez les polices pixel ci-dessus.
Déposez une image ici ou cliquez pour parcourir
PNG, JPG, GIF, BMP, WebP ou SVG — un logo, une icône ou une capture d'écran
Les pixels sombres de l'image deviennent des pixels allumés à l'écran. Les zones transparentes comptent comme fond.
Vous avez récupéré un tableau de police d'un ancien projet ou d'un tutoriel sans savoir comment il a été généré ? Collez-le ici : chaque sens de balayage et chaque ordre de bits sont dessinés côte à côte, et celui qui se lit vous donne les réglages.
Correspond à la mémoire par pages des SSD1306 / SSD1309 / SH1106 / ST7565 et à MicroPython framebuf.MONO_VLSB — écrivez les octets directement dans l'afficheur.
Pixel allumé = 1, glyphe GNU Unifont. Comparez ces octets avec votre propre tableau pour savoir avec quels réglages il a été produit.
| Sens de balayage | Ordre des bits | Octets (hex) |
|---|---|---|
| Ligne par ligne (octets horizontaux) | MSB en premier — premier pixel sur le 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 |
| Ligne par ligne (octets horizontaux) | LSB en premier — premier pixel sur le 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 |
| Colonne par colonne (octets verticaux) | MSB en premier — premier pixel sur le 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 |
| Colonne par colonne (octets verticaux) | LSB en premier — premier pixel sur le 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 |
| Colonnes par page (octets verticaux, ordre des pages SSD1306) | MSB en premier — premier pixel sur le 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 |
| Colonnes par page (octets verticaux, ordre des pages SSD1306) | LSB en premier — premier pixel sur le 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 |
| Lignes par bande (octets horizontaux, bandes de 8 pixels) | MSB en premier — premier pixel sur le 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 |
| Lignes par bande (octets horizontaux, bandes de 8 pixels) | LSB en premier — premier pixel sur le 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 |
Polices pixel : GNU Unifont (16 px) et Fusion Pixel Font (12 px), toutes deux sous SIL Open Font License 1.1. Textes des licences
Conçu et vérifié par l'équipe d'ingénierie Go Tools.
Colonnes par page · LSB en premier Colonnes par page, LSB en premier, pixel allumé = 1 — quand vous écrivez les octets directement dans la mémoire d'affichage.
Ligne par ligne · MSB en premier Ligne par ligne, MSB en premier, pixel allumé = 1, chaque ligne complétée jusqu'à un nombre entier d'octets.
32 octets 32 octets, quel que soit le sens de balayage. Un 12 × 12 fait 24 octets, un caractère ASCII 8 × 16 en fait 16.
逆向 = LSB en premier 顺向 (« sens direct ») = MSB en premier (premier pixel sur le bit 7) ; 逆向 (« sens inverse ») = LSB en premier (premier pixel sur le bit 0).
La plupart des contrôleurs OLED et LCD graphiques — dont le SSD1306, le SH1106 et le ST7565 — n'intègrent aucune police. Pour afficher un caractère, le firmware copie dans la mémoire d'affichage une petite grille de pixels allumés ou éteints, un bit par pixel, huit pixels par octet. Transformer un glyphe en ces octets s'appelle « prendre le modèle » du caractère — 取模 dans les tutoriels embarqués chinois, la tâche que le logiciel Windows PCtoLCD2002 assure depuis des années.
Les octets seuls ne suffisent pas. Un même caractère 16 × 16 peut être empaqueté de quatre façons (ligne par ligne, colonne par colonne, colonnes par page, lignes par bande), et chacune peut placer le premier pixel sur le bit 7 ou sur le bit 0. Huit flux d'octets décrivent le même glyphe, et un afficheur n'en dessine correctement qu'un seul. C'est pour cela qu'une police copiée depuis un tutoriel apparaît si souvent en miroir, coupée en deux ou pivotée.
// 中 (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 Les polices du navigateur sont des contours lissés ; seuillées à 12 px dans une police Song, les traits horizontaux de 中 disparaissent tout simplement. Cet outil embarque donc de vraies polices bitmap : la police 16 × 16 couvre les 6 763 caractères du GB2312, tandis que la police 12 × 12 en omet 143 rares, qui sont dessinés avec une police système et signalés.
Ligne par ligne, colonne par colonne, colonnes par page et lignes par bande, chacun en MSB en premier ou LSB en premier, pixel allumé = 1 ou 0. Les noms des options reprennent ceux de PCtoLCD2002 et leur sens a été vérifié d'après la fiche technique du SSD1306 et des projets d'exemple OLED courants : vous pouvez donc choisir les mêmes réglages qu'un projet existant.
Choisissez SSD1306, Adafruit GFX ou XBM et les options sont réglées pour vous. Modifiez une option à la main et l'outil indique quels afficheurs et bibliothèques lisent cet ordre d'octets — ou qu'aucun ne le fait.
Collez un tableau de police d'origine inconnue : les huit lectures possibles (balayage × ordre des bits) sont dessinées côte à côte. Celle qui se lit vous donne les réglages ; un clic suffit pour les appliquer.
Logos, icônes et photos sont redimensionnés à la taille de votre écran puis convertis par seuil, tramage Floyd–Steinberg ou Atkinson. Les zones transparentes comptent comme fond, et le seuil s'applique dans tous les modes.
Tableaux 2D style C51 avec commentaires /*"中",0*/, Arduino PROGMEM avec offsets, dictionnaires bytearray MicroPython, lignes DB pour A51 ou hexadécimal brut. Le C généré compile sans avertissement avec -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 octets : les 16 colonnes de la page 0 (lignes 0–7), puis les 16 colonnes de la page 1 (lignes 8–15). Dans le 0xFF de la colonne 7, tous les bits sont à 1 : le trait vertical traverse les huit lignes des deux pages.
中
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
Deux octets par ligne, 16 lignes. 0x01 0x00 correspond au seul trait central : le pixel le plus à gauche est le bit 7 du premier octet, donc le pixel de la colonne 7 tombe sur le bit 0. Envoyez ces octets en écriture de page à un SSD1306 et vous obtenez des pixels sans queue ni tête — même glyphe, empaquetage différent.
A
00 00 00 00 18 24 24 42 42 7E 42 42 42 42 00 00
Les caractères ASCII sont en demi-largeur : 8 × 16 font 16 octets, soit un octet par ligne en balayage ligne par ligne. Cochez « Donner la pleine largeur de cellule aux caractères demi-largeur » si votre pilote attend des glyphes tous en 16 × 16.
中 (12 × 12, ligne par ligne, MSB en premier)
00 00 04 00 04 00 FF E0 84 20 84 20 84 20 FF E0 04 00 04 00 04 00 04 00
Chaque ligne de 12 pixels occupe deux octets ; les quatre derniers bits du second octet sont du remplissage. 12 lignes × 2 octets = 24. Toutes les bibliothèques d'affichage adressent une ligne sur (largeur + 7) / 8 octets : tasser davantage les bits les rendrait toutes inutilisables.
Le texte utilise une vraie police pixel : 12 × 12 (Fusion Pixel) ou 16 × 16 (GNU Unifont), l'ASCII en demi-largeur. Pour un logo ou une icône, passez à l'onglet Image et indiquez la taille cible, par exemple 128 × 64.
SSD1306 / SH1106 / ST7565 attendent des octets verticaux rangés par page, pixel du haut sur le bit 0. Adafruit GFX, TFT_eSPI, U8g2 drawBitmap et LVGL attendent des octets horizontaux, pixel de gauche sur le bit 7. XBM / U8g2 drawXBM : même chose, mais pixel de gauche sur le bit 0.
L'aperçu montre exactement le bitmap encodé. Cliquez sur un pixel pour l'inverser, ou décalez le glyphe avec les champs de décalage.
Choisissez C (style C51 de PCtoLCD2002), Arduino PROGMEM, bytearray MicroPython, assembleur A51 ou hexadécimal brut. La première ligne de la sortie indique le sens de balayage, l'ordre des bits et la taille des glyphes : le tableau se documente lui-même.
Octets horizontaux avec le mauvais ordre de bits. Adafruit GFX drawBitmap() veut MSB en premier ; XBM et U8g2 drawXBM() veulent LSB en premier.
U8g2 drawXBM() alimenté en octets MSB en premier
drawXBM() → préréglage XBM (ligne par ligne, LSB en premier)
Octets verticaux avec le mauvais ordre de bits. Les contrôleurs de type SSD1306 placent D0 sur la ligne du haut : il leur faut LSB en premier.
Colonnes par page, MSB en premier → SSD1306
Colonnes par page, LSB en premier → SSD1306
Confusion entre colonne par colonne et colonnes par page. Les deux donnent les mêmes octets uniquement pour des glyphes de 8 pixels de haut au plus ; à 16 pixels, l'ordre des octets diffère.
Colonne par colonne → écritures de page SSD1306
Colonnes par page → écritures de page SSD1306
Un retournement diagonal signifie que des octets horizontaux ont été lus comme verticaux (ou l'inverse). Un texte sombre sur fond allumé signifie qu'allumé = 0 a été choisi alors que l'afficheur attend allumé = 1.
Octets ligne par ligne envoyés à une page SSD1306
Collez le tableau dans l'onglet de décodage et retenez l'aperçu lisible
Outils de conversion
Convertissez entre binaire, hexadécimal, décimal, octal et toute base (2-36) instantanément. Gratuit, privé, 100 % dans votre navigateur.
Outils de conversion
Saisissez un entier signé et obtenez d'un coup signe-valeur absolue, complément à un, complément à deux et binaire décalé, de 4 à 64 bits. Ou collez un motif de bits ou un octet hexadécimal et lisez les cinq interprétations.
Outils de conversion
Convertissez les permissions de fichiers Linux entre octal (755, 644) et symboles rwx. Obtenez les commandes chmod, repérez les réglages risqués comme 777 — gratuit, directement dans votre navigateur.
Outils de conversion
Convertissez HEX en RGB, HSL, OKLCH, OKLAB et CMYK dans votre navigateur — copiez n'importe quel format en un clic. Gratuit, sans inscription, vos couleurs ne quittent jamais la page.
Outils de conversion
Convertissez des coordonnées GPS dans tous les formats — degrés décimaux, degrés minutes secondes (DMS) — en UTM, Web Mercator, GCJ-02 (AMap) et BD-09 (Baidu). Détecte lat,lng ou lng,lat, export CSV. Tout reste en local.
Outils de conversion
Convertissez n'importe quelle couleur HEX en CMYK dans votre navigateur. Approximation naïve basée sur sRGB pour les aperçus d'impression. Gratuit, instantané, sans inscription, vos couleurs restent locales.