zurück zur Übersicht...
23.01.2019

0,96″ OLED Displays

In den folgenden Test werden zwei verschiedene 0,96″ OLED Module für den Arduino gestestet.

Verwendete Bauteile

OLED-Modul mit I²C-Schnittstelle

0,96″ OLED Modul mit I²C-Schnittstelle
Abb.: 0,96″ OLED Modul mit I²C-Schnittstelle (Frontseite)
0,96″ OLED Modul mit I²C-Schnittstelle
Abb.: 0,96″ OLED Modul mit I²C-Schnittstelle (Rückseite)

Anschlüsse des I²C-OLED-Moduls

OLED Arduino Uno
GND GND
VCC 3,3V bzw. 5V
SCL A5
SDA A4
Aufbau der Schaltung mit dem I²C-Interface
Abb.: Aufbau der Schaltung mit dem I²C-Interface

Zum Betrieb des OLED-Moduls mit I²C-Schnittstelle wurden verschiedene Software-Libraries verwendet:

Arduino-Library: "Adafruit_SSD1306"

Für die Library Adafruit_SSD1306 wird zusätzlich noch die allgemeine Adafruit-GFX-Library benötigt.
Nun kann das OLED recht leicht gestestet werden: Das mitgelieferte Beispiel "ssd1306_128x32_i2c" zeigt die Möglichkeiten des OLED-Displays.
Um den 128×64-Modus zu aktivieren, musste ich in dem Beispiel-Sketch "ssd1306_128x64_i2c" die I²C-Adresse abändern von 0x3D → 0x3C

Geänderte I²C-Adresse für den 128x64-Modus des OLED-Moduls
Abb.: Geänderte I²C-Adresse für den 128×64-Modus des OLED-Moduls

Arduino-Library: "SSD1306Ascii"

Die Library SSD1306Ascii ist zwar nur eine Text-Library für SSD1306-OLEDs, aber hier ist es leicht möglich, den 128×64-Modus zu aktiveren. Man kann dies leicht mit dem Beispiel "AvrI2c128x64" testen.

OLED-Modul mit SPI-Schnittstelle

0,96″ OLED Modul mit SPI-Schnittstelle
Abb.: 0,96″ OLED Modul mit SPI-Schnittstelle (Frontseite)
0,96″ OLED Modul mit SPI-Schnittstelle
Abb.: 0,96″ OLED Modul mit SPI-Schnittstelle (Rückseite)

Anschlüsse des SPI-OLED-Moduls

OLED Arduino Uno
GND GND
VCC 3,3V
D0 (CLK, SCL, Hardware SCK) 13
D1 (DATA, MOSI DATA, SDA, Hardware MOSI) 11
CS (DS, Chip Select) 10 (frei belegbar)
DC (Data/Command) 9 (frei belegbar)
Reset (Res) 8 (frei belegbar)

Arduino-Library: "Adafruit_SSD1306"

Für die Library Adafruit_SSD1306 wird zusätzlich noch die allgemeine Adafruit-GFX-Library benötigt.
Mit der Verwendung der mitgelieferte Beispiel-Sketche "ssd1306_128x32_spi" (128×32 Pixel Modus) und "ssd1306_128x64_spi" (128×64 Pixel Modus) kann das OLED schnell getestet werden. In den Sketchen müssen nur noch nach Bedarf die Pin-Belegungen angepasst werden.

Pin-Belegung beim SPI-OLED-Modul anpassen
Abb.: Pin-Belegung beim SPI-OLED-Modul anpassen

U8glib

Eine weitere Library ist die U8glib bzw. deren aktueller Nachfolger U8g2.
Die Installation erfolgt wie gehabt in der Arduino-IDE über das Menü "Sketch → Bibliothek einbinden → Bibliotheken verwalten..."

U8G2-Bibiothek in der Arduino-IDE installieren
Abb.: U8G2-Bibiothek in der Arduino-IDE installieren

Zum Test können die zahlreichen mitgelieferten Beispiel-Sketche verwendet werden, oder alternativ auch folgender, einfacher Sketch (PINs evtl. noch anpassen):

#include <Arduino.h>
#include <SPI.h>
#include <U8g2lib.h>

#define PIN_CLK 13
#define PIN_SDA 11
#define PIN_CS  10
#define PIN_DC   9
#define PIN_RES  8

// U8g2 constructor
U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, PIN_CLK, PIN_SDA, PIN_CS, PIN_DC, PIN_RES);

// Create a U8g2log object
U8G2LOG u8g2log;

// assume 4x6 font, define width and height
#define U8LOG_WIDTH 32
#define U8LOG_HEIGHT 10

// allocate memory
uint8_t u8log_buffer[U8LOG_WIDTH * U8LOG_HEIGHT];

void setup(void)
{
    u8g2.begin();
    u8g2.setFont(u8g2_font_tom_thumb_4x6_mf);   // set the font for the terminal window
    u8g2log.begin(u8g2, 32, 10, u8log_buffer);  // connect to u8g2, assign buffer
}

void loop(void)
{
    u8g2log.print(millis());
    u8g2log.print("\n");
    delay(500);
}
Ausgabe des obigen Beispiels auf dem OLED-Modul
Abb.: Ausgabe des obigen Beispiels auf dem OLED-Modul