Jakich ustawień wymaga OLED SSD1306?
Kolumny w stronach · najpierw LSB Kolumny w stronach, najpierw LSB, zapalony piksel = 1 – gdy bajty trafiają prosto do pamięci wyświetlacza.
Zamiana tekstu i obrazów na tablice C dla SSD1306, SH1106, ST7920 i Adafruit GFX. Ostre czcionki pikselowe 12×12 i 16×16, wszystkie cztery tryby skanowania PCtoLCD2002 i dekoder nieznanych tablic.
Czcionki systemowe to wygładzane kontury, więc poniżej ok. 20 px kreski się rwą lub zlewają. Dla 12 i 16 px lepsze są czcionki pikselowe powyżej.
Upuść obraz tutaj lub kliknij, aby wybrać plik
PNG, JPG, GIF, BMP, WebP lub SVG – logo, ikona albo zrzut ekranu
Ciemne piksele obrazu stają się zapalonymi pikselami na wyświetlaczu. Obszary przezroczyste liczą się jako tło.
Tablica czcionki ze starego projektu lub poradnika i nie wiadomo, jak powstała? Wystarczy wkleić ją tutaj: każdy kierunek skanowania i kolejność bitów pojawi się obok siebie, a czytelny podgląd wskaże ustawienia.
Pasuje do pamięci stronowej SSD1306 / SSD1309 / SH1106 / ST7565 i do MicroPython framebuf.MONO_VLSB – bajty można zapisać prosto do wyświetlacza.
Zapalony piksel = 1, glif z GNU Unifont. Porównanie tych bajtów z własną tablicą pozwala ustalić, z jakimi ustawieniami ją wygenerowano.
| Kierunek skanowania | Kolejność bitów | Bajty (hex) |
|---|---|---|
| Wierszami (bajty poziome) | Najpierw MSB — pierwszy piksel w bicie 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 |
| Wierszami (bajty poziome) | Najpierw LSB — pierwszy piksel w bicie 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 |
| Kolumnami (bajty pionowe) | Najpierw MSB — pierwszy piksel w bicie 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 |
| Kolumnami (bajty pionowe) | Najpierw LSB — pierwszy piksel w bicie 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 |
| Kolumny w stronach (bajty pionowe, kolejność stron SSD1306) | Najpierw MSB — pierwszy piksel w bicie 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 |
| Kolumny w stronach (bajty pionowe, kolejność stron SSD1306) | Najpierw LSB — pierwszy piksel w bicie 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 |
| Wiersze w paskach (bajty poziome, paski po 8 pikseli) | Najpierw MSB — pierwszy piksel w bicie 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 |
| Wiersze w paskach (bajty poziome, paski po 8 pikseli) | Najpierw LSB — pierwszy piksel w bicie 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 |
Czcionki pikselowe: GNU Unifont (16 px) i Fusion Pixel Font (12 px), obie na licencji SIL Open Font License 1.1. Teksty licencji
Zbudowane i zweryfikowane przez zespół inżynierski Go Tools.
Kolumny w stronach · najpierw LSB Kolumny w stronach, najpierw LSB, zapalony piksel = 1 – gdy bajty trafiają prosto do pamięci wyświetlacza.
Wierszami · najpierw MSB Wierszami, najpierw MSB, zapalony piksel = 1, każdy wiersz dopełniony do pełnych bajtów.
32 bajty 32 bajty w każdym kierunku skanowania. 12 × 12 to 24 bajty, znak ASCII 8 × 16 – 16.
逆向 = najpierw LSB 顺向 = najpierw MSB (pierwszy piksel w bicie 7); 逆向 = najpierw LSB (pierwszy piksel w bicie 0).
Większość graficznych sterowników OLED i LCD – w tym SSD1306, SH1106 i ST7565 – nie ma wbudowanej czcionki. Aby pokazać znak, firmware kopiuje do pamięci wyświetlacza małą siatkę pikseli (zapalony/zgaszony): jeden bit na piksel, osiem pikseli na bajt. Zamianę glifu na te bajty chińskie poradniki embedded nazywają 取模 – to zadanie, które windowsowy program PCtoLCD2002 wykonuje od lat.
Same bajty to jednak za mało. Ten sam znak 16 × 16 można spakować na cztery sposoby (wierszami, kolumnami, kolumny w stronach, wiersze w paskach), a każdy z nich może umieścić pierwszy piksel w bicie 7 albo w bicie 0. Osiem ciągów bajtów opisuje ten sam glif, a wyświetlacz poprawnie narysuje tylko jeden z nich. Dlatego czcionka skopiowana z poradnika tak często pojawia się w lustrzanym odbiciu, przecięta na pół albo obrócona.
// 中 (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 Czcionki przeglądarki to wygładzane kontury; po progowaniu przy 12 px w kroju Song poziome kreski znaku 中 po prostu znikają. Dlatego to narzędzie ma prawdziwe czcionki bitmapowe: czcionka 16 × 16 obejmuje wszystkie 6 763 znaki GB2312, a w czcionce 12 × 12 brakuje 143 rzadkich znaków – te są rysowane czcionką systemową i oznaczane.
Wierszami, kolumnami, kolumny w stronach i wiersze w paskach, każdy z opcją najpierw MSB lub najpierw LSB, zapalony piksel = 1 lub 0. Nazwy opcji odpowiadają PCtoLCD2002, a ich znaczenie sprawdzono z notą katalogową SSD1306 i popularnymi przykładowymi projektami OLED, więc możesz wybrać te same ustawienia, których używa istniejący projekt.
Po wybraniu SSD1306, Adafruit GFX lub XBM opcje ustawiają się same. Po ręcznej zmianie dowolnej opcji narzędzie podaje, które wyświetlacze i biblioteki czytają taką kolejność bajtów – albo że nie czyta jej żadna.
Po wklejeniu tablicy czcionki nieznanego pochodzenia wszystkie osiem odczytów (kierunek skanowania × kolejność bitów) pojawia się obok siebie. Czytelny wskazuje ustawienia; jedno kliknięcie je przenosi.
Logo, ikony i zdjęcia są skalowane do rozmiaru wyświetlacza i konwertowane progiem, ditheringiem Floyd–Steinberg lub Atkinson. Obszary przezroczyste liczą się jako tło, a próg działa w każdym trybie.
Tablice 2D w stylu C51 z komentarzami /*"中",0*/, Arduino PROGMEM z przesunięciami, słowniki bytearray dla MicroPythona, wiersze DB dla A51 lub czysty hex. Wygenerowany kod C kompiluje się bez ostrzeżeń z -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 bajty: 16 kolumn strony 0 (wiersze 0–7), potem 16 kolumn strony 1 (wiersze 8–15). W bajcie 0xFF w kolumnie 7 ustawiony jest każdy bit: pionowa kreska przechodzi przez wszystkie osiem wierszy obu stron.
中
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
Dwa bajty na wiersz, 16 wierszy. 0x01 0x00 to sama środkowa kreska: skrajny lewy piksel to bit 7 pierwszego bajtu, więc piksel w kolumnie 7 trafia do bitu 0. Te same bajty wysłane do SSD1306 zapisem stronowym dają śmieci – ten sam glif, inaczej spakowany.
A
00 00 00 00 18 24 24 42 42 7E 42 42 42 42 00 00
Znaki ASCII mają połowę szerokości: 8 × 16 to 16 bajtów, przy skanowaniu wierszami jeden bajt na wiersz. Jeśli sterownik oczekuje, że każdy glif ma 16 × 16, należy zaznaczyć „Pełna szerokość komórki dla znaków połówkowych (A–Z, 0–9)”.
中 (12 × 12, wierszami, najpierw MSB)
00 00 04 00 04 00 FF E0 84 20 84 20 84 20 FF E0 04 00 04 00 04 00 04 00
Każdy 12-pikselowy wiersz wymaga dwóch bajtów; ostatnie cztery bity drugiego bajtu to dopełnienie. 12 wierszy × 2 bajty = 24. Każda biblioteka wyświetlaczy adresuje wiersze jako (width + 7) / 8 bajtów, więc ciaśniejsze upakowanie bitów rozłożyłoby je wszystkie.
Tekst powstaje z prawdziwej czcionki pikselowej: 12 × 12 (Fusion Pixel) lub 16 × 16 (GNU Unifont), z ASCII o połowie szerokości. Do logo i ikon służy karta „Obraz” – tam ustawia się rozmiar docelowy, np. 128 × 64.
SSD1306 / SH1106 / ST7565 wymagają bajtów pionowych w kolejności stron, z górnym pikselem w bicie 0. Adafruit GFX, TFT_eSPI, U8g2 drawBitmap i LVGL wymagają bajtów poziomych z lewym pikselem w bicie 7. XBM / U8g2 drawXBM – to samo, ale z lewym pikselem w bicie 0.
Podgląd pokazuje dokładnie tę bitmapę, która trafia do danych. Kliknięcie piksela przełącza jego stan, a pola przesunięcia pozwalają przesunąć glif.
Do wyboru: C (styl C51 z PCtoLCD2002), Arduino PROGMEM, MicroPython bytearray, asembler A51 lub czysty hex. Pierwszy wiersz wyniku zapisuje kierunek skanowania, kolejność bitów i rozmiar glifu, więc tablica sama się dokumentuje.
Bajty poziome z błędną kolejnością bitów. Adafruit GFX drawBitmap() wymaga najpierw MSB; XBM i U8g2 drawXBM() wymagają najpierw LSB.
U8g2 drawXBM() dostaje bajty z najpierw MSB
drawXBM() → ustawienie XBM (wierszami, najpierw LSB)
Bajty pionowe z błędną kolejnością bitów. Kontrolery typu SSD1306 umieszczają D0 w górnym wierszu, więc wymagają najpierw LSB.
Kolumny w stronach, najpierw MSB → SSD1306
Kolumny w stronach, najpierw LSB → SSD1306
Pomylone tryby „kolumnami” i „kolumny w stronach”. Dają te same bajty tylko dla glifów o wysokości do 8 pikseli; przy 16 pikselach kolejność bajtów jest inna.
Kolumnami → zapis stronowy do SSD1306
Kolumny w stronach → zapis stronowy do SSD1306
Odbicie wzdłuż przekątnej oznacza, że bajty poziome zostały odczytane jako pionowe (lub odwrotnie). Ciemny tekst na jasnym tle oznacza, że wybrano zapalony = 0 tam, gdzie wyświetlacz oczekuje zapalony = 1.
Bajty „wierszami” wysłane do strony SSD1306
Wklej tablicę w karcie dekodera i wybierz czytelny podgląd
Narzędzia konwersji
Konwertuj między systemami binarnym, szesnastkowym, dziesiętnym i ósemkowym (2–36) w czasie rzeczywistym. Bezpłatnie i prywatnie — w przeglądarce.
Narzędzia konwersji
Wpisz liczbę całkowitą ze znakiem i otrzymaj naraz kod znak-moduł, U1, U2 oraz kod z nadmiarem, od 4 do 64 bitów. Możesz też wkleić ciąg bitów albo bajt szesnastkowy i zobaczyć wszystkie pięć odczytów obok siebie.
Narzędzia konwersji
Konwertuj uprawnienia plików Linux między zapisem ósemkowym (755, 644) a symbolami rwx. Gotowe polecenia chmod i ostrzeżenia przed ryzykownymi trybami takimi jak 777 — za darmo, w całości w przeglądarce.
Narzędzia konwersji
Konwertuj HEX na RGB, HSL, OKLCH, OKLAB i CMYK w przeglądarce — skopiuj dowolny format jednym kliknięciem. Darmowy, bez rejestracji, kolory nigdy nie opuszczają strony.
Narzędzia konwersji
Przelicznik współrzędnych GPS w dowolnym formacie — stopnie dziesiętne, stopnie minuty sekundy (DMS) — na UTM, Web Mercator, GCJ-02 (AMap) i BD-09 (Baidu). Rozpoznaje lat,lng i lng,lat, odwraca GCJ-02 z błędem < 1 mm, eksport CSV.
Narzędzia konwersji
Konwertuj kolory HEX na CMYK w przeglądarce. Naiwne przybliżenie oparte na sRGB do podglądu druku. Bezpłatny, bez rejestracji, kolory zostają lokalnie.