Bibliothek u8g2

Lesezeit: 8 Minuten

Beispiele für unterstützte Displays

Typ­beze­ich­nungOLED 0,96 Zoll SSD1306OLED 1,3 Zoll SH1106OLED 1,5 Zoll SH1107OLED 2,42 Zoll SSD1309
AnschlussI²CI²CI²CSPI

🔗voll­ständi­ge Liste der unter­stützten Dis­plays (abgerufen am 07.12.24)

Anschluss eines OLED mit I²C an ver­schiedene Mikro­con­troller

Pin­bele­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:

Die ver­schiede­nen OLEDs müssen je nach Typ unter­schiedlich ini­tial­isiert wer­den:

0,96 Zoll mit I2C-Anschluss (SSD1306)
U8G2_SSD1306_128X64_NONAME_1_HW_I2C oled(U8G2_R0);

1,3 Zoll mit I2C-Anschluss (SH1106)
U8G2_SH1106_128X64_NONAME_1_HW_I2C oled(U8G2_R0);

1,5 Zoll mit I2C-Anschluss (SH1107)
U8G2_SH1107_SEEED_128X128_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);

Bibliothek einbinden und Display initialisieren

Hier sollen die Dis­plays mit den Chip­sätzen SSD1306 und SH1106 und I2C betra­chtet wer­den.
Die Bib­lio­thek ken­nt zwei ver­schiedene Modi den Bild­schirm anzus­prechen:

Page buffer mode: langsam, wenig Spe­icherbe­darf

Full screen buffer mode schnell, sehr hoher Spe­icherbe­darf mit dem Hin­weis Spe­icher­platz- und Sta­bil­ität­sprob­leme beim UNO R3

Sie unter­schei­den sich in der Ini­tial­isierung und in der Pro­gram­mierung:

Page buffer mode (1 hin­ter NONAME)

Full screen buffer mode (F hin­ter NONAME)

Darstel­lung der Inhalte

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

Nach jed­er Erhöhung des Zäh­lers muss der Inhalt des Bild­schirms mit clearDis­play gelöscht wer­den, dadurch flack­ert der Bild­schirm.

Page buffer mode:

Full screen buffer mode:

Das Flack­ern des Bild­schirms wird vernieden.

Funktionen der Bibliothek u8g2

Schlüs­sel­wortPara­me­terAktion
begin();OLED starten
get­Dis­play­Width();Bild­schirm­bre­ite fest­stellen
get­Dis­play­Height();Bild­schirmhöhe fest­stellen
clearDis­play();Bild­schirm dunkel schal­ten
setdrawColor(Parameter)0 → schwarz
1 → weiß
Zeichen­farbe fes­tle­gen
setContrast(Parameter)0 … 255Kon­trast ein­stellen
setDisplayRotation(U8G2_R*);U8G2_R0 → 0 Grad
U8G2_R1 → 90 Grad
U8G2_R2 → 180 Grad
U8G2_R3 → 270 Grad
Anzeige drehen
flipMode(Parameter);0 → nor­male Aus­rich­tung
1 → 180 Grad drehen
wirk­sam erst bei ein­er Rota­tion
Anzeige spiegeln (180 Grad)
home();Cur­sor in die linke obere Ecke set­zen
drawPixel(x‑Achse, y‑Achse)einzel­nen Pix­el zeich­nen
drawLine(StartX, StartX, EndeX, EndeY);Lin­ie zeich­nen
drawHLine(StartX, Star­tY, Länge);hor­i­zon­tale Lin­ie zeich­nen
drawVLine(StartX, Star­tY, Länge);ver­tikale Lin­ie zeich­nen
drawFrame(StartX, Star­tY„ Bre­ite, Höhe);Rechteck zeich­nen
drawRFrame(StartX, Star­tY, Bre­ite, Höhe, Eck­en­ra­dius);abgerun­detes Rechteck zeich­nen
drawBox(StartX, Star­tY, Bre­ite, Höhe);aus­ge­fülltes Rechteck zeich­nen
drawCircle(MittelpunkX, Mit­telpunk­tY, Radius, Kreisauss­chnitt);U8G2_DRAW_UPPER_RIGHT
U8G2_DRAW_UPPER_LEFT
U8G2_DRAW_LOWER_RIGHT
U8G2_DRAW_LOWER_LEFT
U8G2_DRAW_ALL
Kreis zeich­nen
Viertelkreis oben rechts
Viertelkreis oben links
Viertelkreis unten rechts
Viertelkreis unten links
voller Kreis
drawDisc(MittelpunkX, Mit­telpunk­tY, Radius);Aus­ge­füll­ten Kreis zeich­nen
drawEllipse(StartX, Star­tY, RadiusX, RadiusY);Ellipse zeich­nen
drawXBM(StartX, Star­tY, Bre­ite, Höhe, Array_Bilddatei);XBM-Bild anzeigen
setCursor(x‑Achse, y‑Achse);Cur­sor set­zen
setFont(Schriftart)Beispiele für funk­tion­ierende Schrif­tarten:
Schrifthöhe in Pix­eln (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
Schrif­tart
print(“Text”);
drawStr(StartX, Star­tY ‚“Text”);
Text schreiben
setFontDirection(Wert);0 → nor­mal aus­gerichtet
1 → 90 ° gedreht
2 → 180 ° gedreht
3 → 270 ° gedreht
Schreib­rich­tung

Quelle: 🔗https://github.com/olikraus/u8g2/wiki/u8g2reference (abgerufen am 07.12.24)

weit­ere Schrif­tarten: 🔗https://github.com/olikraus/u8g2/wiki/fntlistall (abgerufen am 15.07.24)
Du musst aus­pro­bieren, welche Schrif­tarten dargestellt wer­den kön­nen!

Inhalte darstellen

Grafische Inhalte

draw(XBM();drawDisc();draw­Cir­cle();draw­Line();

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

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

XBM-Datei mit GIMP erstellen

Bildschirm drehen

Beispiel


Letzte Aktualisierung: Nov. 16, 2025 @ 10:09