OLED-Display mit SSD1306-Chipsatz via I2C an Arduino anschließen

  • 0

OLED-Display mit SSD1306-Chipsatz via I2C an Arduino anschließen

Kategorien:

Arduino

OLED-Display mit SSD1306-Chipsatz via I2C an Arduino anschließenAusdrucken Ausdrucken

Wir haben in unserem Shop beispielsweise das 0,91 Zoll I2C OLED-Display im Angebot.

Dieses Display wird mit dem SSD1306-Chipsatz angesteuert und somit lässt es sich ganz einfach mit einem Arduino verwenden, da es eigens für diesen Chipsatz eine, bzw. mehrere Bibliotheken gibt.
Damit können wir mit einigen wenigen Befehlen ganz einfach Inhalte auf dem Display darstellen.

Fangen wir mit der Verkabelung an. Das Display hat vier Anschlüsse, die wir mit einem Arduino Uno wie folgt verbinden:

VCC (Display) an +5V (Arduino) – (oder externe Stromquelle),
GND (Display) an GND (Arduino) für eine gemeinsames Bezugspotential (falls externe Stromquelle, dann den Minuspol der Stromquelle auch auf GND legen),
SDA (Display) an Pin A4 (Arduino Uno SDA-Pin),
SCL oder SCK (Display) an den Pin A5 (Arduino Uno SCL-Pin)

Mehr müsst Ihr nicht machen.

Jetzt müssen wir im nächsten Schritt die I2C-Adresse des Displays herausfinden.

Hierfür gibt es einen Sketch, den man zuerst auf den Arduino hochladen muss und dann automatisch die Adresse des angeschlossenen Displays heraus zu finden:

Quelle: https://playground.arduino.cc/Main/I2cScanner/

Öffnet in Eurer Arduino IDE unter „Werkzeuge„->“Serieller Monitor“ den seriellen Monitor. Falls keine Ausgabe zu sehen ist, den Arduino ggf. nochmal resetten.
Notiert Euch nun die genaue Adresse, die ausgegeben wird.

I2C-Scanner Ergebnis

 

Jetzt benötigen wir noch die entsprechenden Bibliotheken für das Display, die wir herunterladen und dann über den Menüpunkt „Bibliothek einbinden“ in unsere Arduino IDE einbinden müssen. Entweder beim Download via „.ZIP-Bibliothek hinzufügen …„, oder, wie im Screenshot zu sehen, über „Bibliotheken verwalten“  zu suchen und einzubinden :

https://github.com/adafruit/Adafruit_SSD1306 („ADAFRUIT SSD1306„)
https://github.com/adafruit/Adafruit-GFX-Library („ADAFRUIT GFX“)

 

OLED-Install_DLL

 

Nachdem diese eingebunden sind, gibt es in der Arduino IDE unter dem Menüpunkt „Datei„->“Beispiele„->“Adafruit SSD1306“ einen Sketch namens „ssd1306_128x32_i2c„.

In diesem wird unter den jeweiligen Funktionen genau erklärt, wie Ihr diverse grafische Objekte wie einfache Linien, Dreiecke, Vierecke, usw., oder aber auch eigene Logos, Symbole, usw. anzeigen lassen könnt.
In diesem Tutorial gehe ich nicht näher auf diese grafischen Möglichkeiten  ein (machen wir vielleicht in einem anderen), da es einfach zu umfangreich ist.

Wir schauen uns den einfachen Textmodus ein wenig genauer an. Um einen eigenen Sketch zu erstellen, sind folgende Zeilen aus dem Beispielprogramm notwendig. Damit werden die Bibliotheken geladen (*.h), so wie einige Displayparameter wie Breite und Höhe definiert:

 

Haben wir eine andere I2C-Displayadresse als 0x3C, dann müssen wir das unbedingt in dieser Zeile anpassen, sonst wird das Display nicht gefunden und das Programm wird gleich wieder beendet.

 

Um das Display anzusteuern, gibt es nun die folgenden Befehle:

display.clearDisplay() – Display wird vollständig bereinigt
display.drawPixel(x,y, color) – Zeichnet einen Pixel auf die x,y-Koordinaten
display.setTextSize(n) – Schriftgröße festlegen. Von 1 bis 8. (bei einem zweizeiligen Display natürlich nicht mehr wie 2 🙂 )
display.setCursor(x,y) – Setzt den Cursor an die x,y-Position, an der der Text beginnen soll
display.print(“message”) – zeigt den Text an den zuvor festgelegten Koordinaten
display.display() – Das wird immer am Ende der Befehlskette aufgerufen, damit die vorher aufgebaute/zusammengesetzte Text/Grafik-Ausgabe zum Display zur Ausgabe gesendet wird.

Beispiel für eine Textzeile:

 

So, jetzt das Ganze nochmal am Stück:

Der Ausgabeteil der Textausgabe zwischen Zeile 21-26 kann natürlich auch in der Loop-Schleife verwendet und jederzeit modifiziert werden. Je nachdem, was angezeigt werden soll.

Eine Kleinigkeit gilt es noch zu beachten bei der Verwendung von Displays: Ein Display zeigt immer das letzte an, dass ihm befohlen wurde darzustellen. So lange, wie es genügend Strom bekommt.
Das heißt, man muss immer, wenn man neue Informationen anzeigen lassen will, den alten Inhalt zuerst löschen (display.clearDisplay();) und neu schreiben, sonst überschreibt man den vorhandenen Inhalt mit dem neuen Inhalt und hat nur noch  Kraut und Rüben auf dem Display.

Ein fleißiger Bastler (vielen Dank, Gregor) hat einen kleinen Sketch für den AtMega 2560 erstellt. Mit einem Taster, der an Pin 2 angeschlossen ist, ändert sich eine Laufschrift auf dem Display. Probiert es einfach mal aus. Man kann sehr schöne Dinge mit so einem Display machen. Vor allem, wenn es ein grafikfähiges Display ist.

 


Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.