Bibliothek u8g2


Beispiele für unterstützte Displays

Typ­be­zeich­nung0,91 Zoll SSD13060,96 Zoll SSD13061,3 Zoll SH11061,5 Zoll SH11071,54 Zoll SSD13092,08 Zoll SH11222,42 Zoll SSD1309
For­mat128x32128x64128x64128x128128x64256x64128x64
AnschlussI²CI²CI²CI²CI²CI²CSPI

🔗voll­stän­di­ge Lis­te der unter­stütz­ten Dis­plays

Anschluss eines OLED mit I²C an ver­schie­de­ne Mikro­con­trol­ler

Pin­be­le­gung eines OLED mit SPI UNO R3

GND -> GND
VCC -> 5V
SCK -> 13
SDA -> 11
RS  ->  8
DC  ->  9
CS  -> 10

Benö­tig­te Bibliothek

Bibliothek einbinden und Display initialisieren

Die ver­schie­de­nen OLEDs müs­sen je nach Typ unter­schied­lich initia­li­siert wer­den:

0,91 Zoll mit I²C-Anschluss (SSD1306)
U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C oled(U8G2_R0);

0,96 Zoll mit I²C-Anschluss (SSD1306)
U8G2_SSD1306_128X64_NONAME_1_HW_I2C oled(U8G2_R0);

1,3 Zoll mit I²C-Anschluss (SH1106)
U8G2_SH1106_128X64_NONAME_1_HW_I2C oled(U8G2_R0);

1,5 Zoll mit I²C-Anschluss (SH1107)
U8G2_SH1107_SEEED_128X128_1_HW_I2C oled(U8G2_R0);

1,54 Zoll mit I²C-Anschluss (CH116)
u8g2 stellt bis jetzt kei­nen eige­nen Trei­ber zur Ver­fü­gung
🔗https://github.com/olikraus/u8g2/discussions/2031
U8G2_SH1106_128X64_NONAME_1_HW_I2C oled(U8G2_R0);
oder:
U8G2_SSD1309_128X64_NONAME0_1_HW_I2C oled(U8G2_R0);

2,42 Zoll mit SPI-Anschluss (SSD1309)
U8G2_SSD1309_128X64_NONAME2_1_4W_HW_SPI oled(U8G2_R0, 10, 9, 8);

Für den ⇒Full Buf­fer Mode muss _1_ durch _F_ ersetzt wer­den.

Hier sol­len die Dis­plays mit den Chip­sät­zen SSD1306, SH1106 und SH1107 und I²C-Anschluss betrach­tet wer­den.
Die Biblio­thek kennt zwei ver­schie­de­ne Modi den Bild­schirm anzu­spre­chen:

Page buf­fer mode: lang­sam, wenig Spei­cher­be­darf

Full buf­fer mode schnell, sehr hoher Spei­cher­be­darf mit dem Hin­weis Spei­cher­platz- und Sta­bi­li­täts­pro­ble­me beim UNO R3. Daher ist die­ser Modus für den UNO R3 nicht geeig­net.

Sie unter­schei­den sich in der Initia­li­sie­rung und in der Pro­gram­mie­rung:

Page buf­fer mode (_1_ hin­ter NONAME)

Full screen buf­fer mode (_F_ hin­ter NONAME)

Darstellung der Inhalte

Das Pro­gramm zeigt einen fort­lau­fen­den Zäh­ler bis 1000, springt dann auf 1 zurück.

Nach jeder Erhö­hung des Zäh­lers muss der Inhalt des Bild­schirms mit cle­ar­Dis­play gelöscht wer­den, dadurch fla­ckert der Bild­schirm.

Page buffer mode

Full buffer mode

Das Fla­ckern des Bild­schirms wird ver­mie­den.

Funktionen der Bibliothek u8g2

Schlüs­sel­wortPara­me­terAkti­on
begin();OLED star­ten
get­Dis­play­Width();Bild­schirm­brei­te fest­stel­len
get­Dis­play­H­eight();Bild­schirm­hö­he fest­stel­len
cle­ar­Dis­play();Bild­schirm dun­kel schal­ten
setdrawColor(Parameter)0 → schwarz
1 → weiß
Zei­chen­far­be fest­le­gen
setContrast(Parameter)0 ... 255Kon­trast ein­stel­len
setDisplayRotation(U8G2_R*);U8G2_R0 → 0 Grad
U8G2_R1 → 90 Grad
U8G2_R2 → 180 Grad
U8G2_R3 → 270 Grad
Anzei­ge dre­hen
flipMode(Parameter);0 → nor­ma­le Aus­rich­tung
1 → 180 Grad dre­hen
wirk­sam erst bei einer Rota­ti­on
Anzei­ge spie­geln (180 Grad)
home();Cur­sor in die lin­ke obe­re Ecke set­zen
drawPixel(x-Achse, y-Ach­se)ein­zel­nen Pixel zeich­nen
drawLine(StartX, StartX, End­eX, EndeY);Linie zeich­nen
drawHLine(StartX, Star­tY, Län­ge);hori­zon­ta­le Linie zeich­nen
drawVLine(StartX, Star­tY, Län­ge);ver­ti­ka­le Linie zeich­nen
drawFrame(StartX, Star­tY,, Brei­te, Höhe);Recht­eck zeich­nen
drawRFrame(StartX, Star­tY, Brei­te, Höhe, Ecken­ra­di­us);abge­run­de­tes Recht­eck zeich­nen
drawBox(StartX, Star­tY, Brei­te, Höhe);aus­ge­füll­tes Recht­eck zeich­nen
drawCircle(MittelpunkX, Mit­tel­punk­tY, Radi­us, Kreis­aus­schnitt);U8G2_DRAW_UPPER_RIGHT
U8G2_DRAW_UPPER_LEFT
U8G2_DRAW_LOWER_RIGHT
U8G2_DRAW_LOWER_LEFT
U8G2_DRAW_ALL
Kreis zeich­nen
Vier­tel­kreis oben rechts
Vier­tel­kreis oben links
Vier­tel­kreis unten rechts
Vier­tel­kreis unten links
vol­ler Kreis
drawDisc(MittelpunkX, Mit­tel­punk­tY, Radi­us);Aus­ge­füll­ten Kreis zeich­nen
drawEllipse(StartX, Star­tY, Radi­usX, Radi­usY);Ellip­se zeich­nen
drawXBM(StartX, Star­tY, Brei­te, Höhe, Array_Bilddatei);XBM-Bild anzei­gen
setCursor(x-Achse, y-Ach­se);Cur­sor set­zen
setFont(Schriftart)Bei­spie­le für funk­tio­nie­ren­de Schrift­ar­ten:
Schrift­hö­he in Pixeln (px)
6px: u8g2_font_5x7_tr
7px: u8g2_font_torussansbold8_8r
8px: u8g2_font_ncenB08_tr
10px: u8g2_font_t0_15b_me
12px: u8g2_font_helvB12_tf
13px: u8g2_font_t0_22_te
14px: u8g2_font_helvB14_tf
17px: u8g2_font_timB18_tf
18px: u8g2_font_lubB18_tr
20px: u8g2_font_courB24_tf
23px: u8g2_font_timB24_tf
25px: u8g2_font_helvR24_tf
32px: u8g2_font_logisoso32_tf
42px: u8g2_font_fub42_tf
58px: u8g2_font_logisoso58_tf
62px: u8g2_font_logisoso62_tn
Schrift­art
print("Text");
drawStr(StartX, Star­tY ,"Text");
Text schrei­ben
setFontDirection(Wert);0 → nor­mal aus­ge­rich­tet
1 → 90 ° gedreht
2 → 180 ° gedreht
3 → 270 ° gedreht
Schreib­rich­tung
enableUTF8Print();Son­der­zei­chen anzei­gen

Quel­le: 🔗https://github.com/olikraus/u8g2/wiki/u8g2reference

wei­te­re Schrift­ar­ten: 🔗https://github.com/olikraus/u8g2/wiki/fntlistall (abge­ru­fen am 15.07.24)
Du musst aus­pro­bie­ren, wel­che Schrift­ar­ten dar­ge­stellt wer­den kön­nen!

Grafische Inhalte

draw(XBM();draw­Disc();draw­Cir­cle();draw­Li­ne();

So sieht es auf dem 0,96 Zoll OLED aus:

So sieht es auf dem 2,42 Zoll OLED aus:

XBM-Datei mit GIMP erstel­len

Bildschirm drehen


Letzte Aktualisierung: Feb. 9, 2026 @ 14:19

Inhalt