OLED Display
(OLED SSD1306 mit 0.96 oder 1.3 Zoll und 128×64 Pixeln)
Das SSD1306 OLED Display mit I2C Schnittstelle kann ohne weitere Bauteile direkt an den Arduino angeschlossen werden. Es gelten folgende Belegungen:
OLED mit I2C | Arduino UNO |
---|---|
GND | GND |
VCC | 5V |
SCL | SCL (oder A5) |
SDA | SDA (oder A4) |
Für die einfache Text Ausgabe sollte die gut dokumentierte U8g2 Bibliothek über den Arduino Bibliotheksmanager eingebunden werden.
Der Konstruktor für die 0.96 Zoll Variante des OLED Displays ist wie folgt:
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE);
Einfache Textausgabe
https://wokwi.com/projects/353733080329208833
#include <Arduino.h>
#include <U8x8lib.h> // Bibliothek U8g2 einbinden
// Beim Arduino Uno werden folgende Pins für das OLED Display verwendet
// OLED Arduino UNO
// ----- -------------
// GND GND
// VCC 5V
// SCL SCL (oder A5)
// SDA SDA (oder A4)
// Konstruktur für I2C OLED 0,96 mit 4 Pins (ohne Reset Pin)
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE);
void setup(void)
{
u8x8.begin();
//u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setFont(u8x8_font_artossans8_r); // Schriftart auswählen
u8x8.drawString(3, 3, "Hallo Welt !");
delay(2000);
}
void loop(void)
{
u8x8.clear(); // Löscht das Display
u8x8.setInverseFont(0); // weiß auf schwarzem Hintergrund
u8x8.drawString(0, 0, "(0,0)"); // Gibt einen Text an der Stelle (x,y) aus
u8x8.drawString(10, 0, "(10,0)"); // (10,0) ist rechts oben
u8x8.setInverseFont(1); // schwarz auf weißem Hintergrund
u8x8.drawString(0, 7, "(0,8)"); // (0,8) ist links unten
u8x8.drawString(10, 7, "(10,8)"); // (10,8) ist rechts unten
delay(2000);
u8x8.setInverseFont(0);
u8x8.clear();
for (int z = 0; z < 8; z++) {
u8x8.setCursor(0, z); // setzt den Cursor an die Stelle (x,y)
u8x8.print("Z"); // Gibt Text aus
u8x8.print(z);
u8x8.print(":");
for (int i = 0; i < (z * 2)-1; i++) {
u8x8.print(".");
delay(100);
}
}
delay(1000);
for (int z = 7; z >= 0; z--) {
u8x8.clearLine(z); // Löscht die angegebene Zeile
delay(100);
}
delay(1000);
}
Die einzelnen Befehle der Bibliothek sind in der Referenz gut erläutert. Zum Beispiel print
oder drawString
.
Terminal mit Zeilenvorschub
https://wokwi.com/projects/353732054698049537
#include <Arduino.h>
#include <U8x8lib.h> // Bibliothek U8g2 einbinden
// Konstruktur für I2C OLED 0,96 mit 4 Pins (ohne Reset Pin)
// Beim Arduino Uno werden folgende Pins für das OLED Display verwendet
// OLED Arduino UNO
// ----- -------------
// GND GND
// VCC 5V
// SCL SCL (oder A5)
// SDA SDA (oder A4)
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(U8X8_PIN_NONE);
// Die Größe des OLED 0.96 Displays
#define U8LOG_WIDTH 16
#define U8LOG_HEIGHT 8
// Konfigurieren des Terminals (U8X8LOG)
uint8_t u8log_buffer[U8LOG_WIDTH*U8LOG_HEIGHT];
U8X8LOG u8x8log;
void setup(void)
{
u8x8.begin();
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8log.begin(u8x8, U8LOG_WIDTH, U8LOG_HEIGHT, u8log_buffer);
u8x8log.setRedrawMode(1); // 0: Update screen with newline,
// 1: Update screen for every char
}
unsigned long t = 0;
// Gibt das Ergebnis von millis() dem Display aus
void loop(void) {
if ( t < millis() ) {
t = millis() + 10000; // alle 10 Sekunden
u8x8log.print("\f"); // \f = form feed: Löscht das Display
}
u8x8log.print("millis=");
u8x8log.print(millis());
u8x8log.print("\n");
delay(20);
}