OLED displej 1,3" 128×64 – I2C, SH1106
Monochromatický OLED displej 1,3 palce s vlastním svícením každého pixelu – skutečná černá tam, kde nic nesvítí, a ostrý kontrast i na malé ploše. Řízení přes I2C na pouhé dva vodiče, kompatibilní s Arduinem, ESP32 i ESP8266, dostupný v bílé i modré barvě pixelů.
Displej, který svítí sám – žádné podsvícení
OLED technologie znamená, že každý pixel je svůj vlastní zdroj světla. Na rozdíl od LCD displejů, kde podsvícení svítí pořád a jen se clona propouští nebo blokuje, tady vypnutý pixel skutečně nesvítí – výsledkem je hlubší černá a vyšší kontrast.
- Každý pixel svítí sám – žádné podsvícení jako u LCD displejů
- Vypnutý pixel je skutečná černá, ne jen ztlumené světlo
- Vysoký kontrast a dobrá čitelnost i z boku (široký pozorovací úhel)

Jen dva vodiče – I2C rozhraní
Displej se připojuje přes I2C sběrnici – stačí dva datové piny (SDA, SCL) plus napájení a zem. Na rozdíl od paralelních nebo SPI displejů nezabere zbytečně moc pinů na desce, které se hodí pro senzory nebo další periferie.
- Řízení přes I2C – stačí 2 datové vodiče (SDA, SCL) plus napájení
- Adresa typicky 0x3C – zapojíte a jede se
- Uvolní piny na desce pro další senzory a periferie

SH1106, ne SSD1306 – pozor na knihovnu
SH1106 a SSD1306 vypadají zvenku skoro stejně, ale mají jinak organizovanou paměť displeje (SH1106 interně 132×64, viditelných jen 128×64). Použití knihovny pro SSD1306 na tomhle displeji způsobí posunutý nebo oříznutý obraz – proto je potřeba knihovna určená přímo pro SH1106.
- Použijte knihovnu pro SH1106 (např. Adafruit_SH110X nebo U8g2)
- Špatná knihovna (SSD1306) způsobí posunutý nebo useknutý obraz
- SH1106 nepodporuje hardwarový scrolling jako SSD1306 – animace řešte v kódu
Malý, lehký a úsporný
Aktivní plocha displeje má jen 29,42 × 14,7 mm, takže se vejde i do kompaktních projektů. Spotřeba navíc roste jen s tím, kolik pixelů zrovna svítí – tmavé rozhraní s málo textem šetří energii, což se hodí pro bateriové projekty.
- Aktivní plocha displeje jen 29,42 × 14,7 mm – vejde se kamkoli
- Spotřeba roste jen s počtem svítících pixelů, ne s celou plochou
- Pracovní teplota −20 až 70 °C – zvládne i venkovní nebo neklimatizované prostředí

Dostupné barvy
Barva se týká jen svítících pixelů – displej je v obou případech monochromatický (jedna barva, ne barevný obraz), pozadí zůstává vždy tmavé.
Kde displej využijete
Hotový kód: animovaný starfield efekt
Chcete vidět displej v akci hned po připojení? Tady je hotová ukázka pro Arduino UNO – hvězdy létající kolem plovoucího nápisu, žádné tlačítko ani jiná součástka navíc. Stačí nahrát a je hotovo.
/*
Starfield / hyperspace efekt pro OLED displej 1,3" 128x64 (SH1106, I2C)
Deska: Arduino UNO
Zapojení (4 vodiče, I2C):
VCC -> 5V (nebo 3,3V, displej zvládá obojí)
GND -> GND
SCL -> A5
SDA -> A4
Potřebné knihovny (nainstaluj přes Sketch -> Include Library -> Manage Libraries):
- Adafruit GFX Library
- Adafruit SH110X
Co to dělá:
Hvězdy létají od středu obrazovky směrem ven a zrychlují, jak se blíží
k okraji - efekt připomíná let "warp speed" ze sci-fi filmů. Uprostřed
se vznáší nápis, který se jemně vlní nahoru/dolů a do stran. Displej
neustále běží sám, nepotřebuje žádné tlačítko ani vstup.
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_ADDR 0x3C // pokud displej nejede, zkus 0x3D
Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const uint8_t NUM_STARS = 45;
const uint8_t SPEED = 4; // vyšší číslo = rychlejší let
const char* TITLE_TEXT = "BASTLIK.CZ";
// Pozn.: výchozí font neumí českou diakritiku (é, í, ě, š, ř...),
// proto je text bez háčků a čárek - jinak by se zobrazil špatně.
struct Star {
int16_t x, y; // pozice hvězdy v 3D prostoru (střed obrazovky = 0,0)
int16_t z; // "hloubka" - jak daleko je hvězda od pozorovatele
};
Star stars[NUM_STARS];
void resetStar(uint8_t i, bool randomDepth) {
stars[i].x = random(-SCREEN_WIDTH, SCREEN_WIDTH);
stars[i].y = random(-SCREEN_HEIGHT, SCREEN_HEIGHT);
stars[i].z = randomDepth ? random(1, SCREEN_WIDTH) : SCREEN_WIDTH;
}
// Vykreslí titulní text, který se jemně vznáší nahoru/dolů a do stran,
// a "vyčistí" prostor za ním, aby hvězdy text nepřekreslovaly.
void drawTitle() {
display.setTextSize(2);
display.setTextColor(SH110X_WHITE);
int16_t x1, y1;
uint16_t w, h;
display.getTextBounds(TITLE_TEXT, 0, 0, &x1, &y1, &w, &h);
// plovoucí pohyb - pomalé vlnění pomocí sinusovky podle uplynulého času
float t = millis() / 1000.0;
int16_t floatX = (int16_t)(cos(t * 1.0) * 2); // pohyb do stran, amplituda 2px
int16_t floatY = (int16_t)(sin(t * 1.5) * 4); // pohyb nahoru/dolů, amplituda 4px
int16_t x = (SCREEN_WIDTH - w) / 2 + floatX;
int16_t y = (SCREEN_HEIGHT - h) / 2 + floatY;
display.fillRect(x - 3, y - 2, w + 6, h + 4, SH110X_BLACK);
display.drawRect(x - 3, y - 2, w + 6, h + 4, SH110X_WHITE);
display.setCursor(x, y - y1);
display.print(TITLE_TEXT);
}
void setup() {
Wire.begin();
Wire.setClock(400000); // rychlejší I2C = plynulejší animace
display.begin(OLED_ADDR, true);
display.clearDisplay();
display.display();
randomSeed(analogRead(A0)); // "náhodné" semínko z nezapojeného pinu
for (uint8_t i = 0; i < NUM_STARS; i++) {
resetStar(i, true);
}
}
void loop() {
display.clearDisplay();
for (uint8_t i = 0; i < NUM_STARS; i++) {
stars[i].z -= SPEED;
if (stars[i].z <= 1) {
resetStar(i, false);
}
// promítnutí 3D pozice hvězdy na 2D obrazovku (čím blíž, tím dál od středu)
int16_t sx = (int32_t)stars[i].x * 32 / stars[i].z + SCREEN_WIDTH / 2;
int16_t sy = (int32_t)stars[i].y * 32 / stars[i].z + SCREEN_HEIGHT / 2;
if (sx >= 0 && sx < SCREEN_WIDTH && sy >= 0 && sy < SCREEN_HEIGHT) {
// blízké hvězdy (malé z) jsou větší a jasnější dojmem
uint8_t size = 1 + (SCREEN_WIDTH - stars[i].z) / 32;
if (size > 3) size = 3;
if (size == 1) {
display.drawPixel(sx, sy, SH110X_WHITE);
} else {
display.fillCircle(sx, sy, size - 1, SH110X_WHITE);
}
}
}
drawTitle();
display.display();
}
Potřebné knihovny (Sketch → Include Library → Manage Libraries): Adafruit GFX Library a Adafruit SH110X (spolu se závislostí Adafruit BusIO, kterou si Library Manager sám nabídne doinstalovat).
Technické parametry
| Úhlopříčka | 1,3" |
| Rozlišení | 128 × 64 px |
| Řadič (driver) | SH1106 |
| Aktivní plocha displeje | 29,42 × 14,7 mm |
| Napájecí napětí | 3,3–5 V |
| Pracovní teplota | −20 až 70 °C |
| Rozhraní | I2C |
| I2C adresa | 0x3C (typicky) |
| Pracovní proud | 100 mA (max.) |
| Barva pixelů | bílá / modrá (dle varianty) |
Na co si dát pozor
- Použijte knihovnu pro SH1106 (např. Adafruit_SH110X nebo U8g2) – je to řadič podobný oblíbenějšímu SSD1306, jen s jinak organizovanou pamětí. Se špatnou knihovnou se nic nepokazí, obraz by jen vypadal posunutý nebo oříznutý.
- Uvedené rozměry (29,42 × 14,7 mm) jsou aktivní plocha displeje, ne celý modul s deskou a piny – ta bude o něco větší.
- Displej je monochromatický – zobrazuje jen jednu barvu pixelů (bílou nebo modrou dle varianty), ne barevný obraz.
- SH1106 nepodporuje hardwarový scrolling – plynulé animace je potřeba řešit vykreslováním v kódu.
FAQ
Jakou knihovnu mám použít?
Jaký je rozdíl mezi bílou a modrou variantou?
Kolik vodičů potřebuji k zapojení?
Jaká je I2C adresa displeje?
Funguje displej na 3,3V logice?
Zobrazuje displej barevný obraz?
Hodnocení produktu
Buďte první, kdo napíše příspěvek k této položce.
Diskuze
Buďte první, kdo napíše příspěvek k této položce.