In diesem Tutorial zeige ich dir wie du mit der quelloffenen Software-Bibliothek lexus2k/ssd1306 den Display-Controller SSD1306 programmieren kannst. Der SSD1306 Treiber wurde speziell für die Anforderungen von Mikrocontroller-Displays entwickelt und es wurde auf einen für Arduino typischen C/C++ Stil geachtet und ist somit für jeden verständlich, der bereits mit der Arduino Plattform gearbeitet hat.
Die Bibliothek kann auch direkt für Linux compiliert werden und zum Beispiel auf einem Raspberry Pi mit SPI laufen. Aber in diesem Tutorial werden wir uns ganz auf die Arduino Plattform konzentrieren.
Der Treiber unterstützt monochrome und RGB OLEDs und verfügt darüber hinaus über einen Debug Modus, der es erlaubt mit Unterstützung von SDL2.0 Code auf dem PC auszuführen.
Natürlich kann der Treiber noch mehr, hier sind die wichtigsten Leistungsmerkmale zusammengefasst:
Leistungsmerkmale
- Unterstützt farbige, monochrome OLED Displays und VGA Monitore
- Die Bibliothek besitzt eine modulare Struktur, somit können Module von der Compilierung ausgeschlossen werden um Flash-Speicher zu sparen
- Benötigt nur sehr wenig RAM
- Schnelle Implementierung um eine angemessene Geschwindigkeit auf langsamen Mikrocontrollern zu ermöglichen
- Unterstützt I2C und SPI Schnittstellen:
- I2C (Softwareimplementierung, Wire Bibliothek, AVR Twi, Linux i2c-dev)
- SPI (4-wire SPI via Arduino SPI Bibliothek, AVR SPI, AVR USI Modul)
- Grundlegende Grafikfunktionen (Linien, Rechtecke, Pixel, Bitmaps)
- Textausgabe (für Schriftarten verschiedener Größen kannst du das Tool GLCD Font Creator für neue Schriftarten nutzen)
- Beinhaltet eine Grafikengine für die Unterstützung von ‚Double Buffering‘ für kleine Mikrocontroller
- Kann für die Spieleentwicklung genutzt werden
Ganz schön viel wirst du denken. Aber keine Sorge, für den Anfang werden wir mit einem Arduino Uno nur einen Text über die I2C-Schnittstelle ausgeben.
Aber jetzt zum praktischen Teil
Tipp: Falls du noch nicht weißt wie man ein OLED Display mit einem Arduino verwendet, solltest du dir vorher diesen Beitrag durchlesen:
OLED I2C Display für Arduino und Raspberry Pi
Was brauchst du?
- ein Arduino Uno
- ein OLED Display mit I2C Schnittstelle
- vier Jumper Wires
Der Aufbau sollte wie im Bild ausschauen:
Für die Programmierung wird die Arduino IDE benötigt sowie der Treiber lexus2k/ssd1306.
- Lade den Treiber von https://github.com/lexus2k/ssd1306 herunter.
- Verschiebe den Inhalt in den Ordner Arduino/libraries/ssd1306/
- Installiere die SSD1306 Bibliothek über den Arduino IDE library manager
Damit ist das Setup unseres Aufbaus abgeschlossen und wir können zur Programmierung übergehen.
Hello World
Wie so oft beginnt alles mit einem „Hello World!“-Programm.
Mit der Funktion ssd1306_setFixedFont() legen wir zunächst die Schriftart und -größe fest, in diesem Fall Standard ASCII 6×8 font. Die Funktion ssd1306_128x64_i2c_init() ist für die Initialisierung der I2C-Schnittstelle zuständig. Mit der Funktion ssd1306_clearScreen() löschen wir das Display.
Diese Funktionen dienten bisher nur zum Setup des Displays. Mit der Funktion ssd1306_printFixed() geben wir nun endlich unseren String „Hello World!“ aus. Die ersten beiden Paramater sind die x,y-Koordinaten, gefolgt von unserem Text und dann noch der Schriftstil. Insgesamt stehen diese drei Schriftstile zur Verfügung, probiere sie einfach aus:
- STYLE_NORMAL,
- STYLE_BOLD,
- STYLE_ITALIC,
Lasse mich bitte wissen wie dir dieses Tutorial gefallen hat indem du mir einen Kommentar hinterlässt.