AEQ-WEB

Arduino OLED LCD Display with GFX Library
Arduino
27.10.2018

Arduino 128x32 OLED Display


Für Mikrocontroller gibt es sehr viele Displays. Neben den Farb-LCD-Displays oder den Matrix Displays werden mittlerweile sehr oft OLED Displays in den Projekten verbaut. Der Vorteil der OLED-Displays liegt darin, dass diese relativ günstig sind. Da jeder einzelne Pixel leuchtet, erzeugen OLED-Displays ein sehr gutes Kontrastverhältnis. Die Displays sind in verschiedenen Farben und Größen erhältlich. Bekannte Größen sind beispielsweiße 128x64 Pixel oder 128x32 Pixel. Zusätzlich sind die Displays auch sehr energiesparend, da nur jeder Pixel, der in Verwendung ist, leuchtet.


Das Display mit dem Arduino

Das Display wird über die I2C Schnittstelle angesteuert. Details zur Adresse gibt es im Datenblatt vom Hersteller. Alternativ kann die I2C Adresse auch mit dem I2C-Scanner ermittelt werden. In unserem Beispiel wird ein 128x32 Pixel OLED-Display verwendet. Die Spannungsversorgung kommt direkt vom Arduino Board und beträgt 5 Volt. Zusätzlich werden noch zwei Bibliotheken benötigt, um das Display ansteuern zu können. Die SSD1306 Library wird für das eigentliche OLED Display benötigt und steuert den Controller am Display an. Die zweite Library (Adafruit GFX) ist die Grafik Library, die z. B. einen String einfach am Display anzeigt und im Hintergrund berechnet, welche Pixel angesteuert werden müssen, um diesen String richtig am Display anzeigen zu können.


Arduino OLED LCD Display Wiring

Die Software

Zuerst müssen beide Bibliotheken in den Librarys-Ordner vom Arduino IDE kopiert worden sein. Unser Beispielcode ist ein sehr einfacher Code, der lediglich drei Zeilen am Display generiert. In der ersten und letzten Zeile wird ein statischer Text angezeigt. In der Mitte läuft ein Counter, der die Laufzeit der Software in Sekunden ausgibt. Das Display wird im Hintergrund ständig aktualisierst. Die SSD1306 Library hat auch einen Beispielcode, der sehr viele Anwendungsmöglichkeiten vom Display vorstellt. Neben der normalen Textanzeige können auch Animationen erstellt werden oder Beispielsweiße eine Laufschrift, Icons (Bitmap), Kurven, Kreise oder verschiedene Schriftarten angezeigt werden.


Arduino Code
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(4); //OLED_RESET 4

#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, change Adafruit_SSD1306.h");
#endif

void setup()   {
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //define I2C Adress
  display.clearDisplay();
}
void loop() {
  long runtime = millis() / 1000;
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(25, 0);
  display.println("Hello world!");
  display.setTextColor(WHITE);
  display.setTextSize(2);
  display.println(runtime);
  display.setTextSize(1);
  display.setTextColor(BLACK, WHITE); //Change Background to White
  display.setCursor(20, 25);
  display.println("WWW.AEQ-WEB.COM");
  display.display();
  display.clearDisplay();
}