OLED steht für “Organic-Light-Emitting-Diodes”. Die Revolutionäre Technologie besteht darin, dass jedes einzelne Pixel des Displays eine eigene Lichtquelle darstellt. Durch die Größe der einzelnen Pixel ist eine wesentlich höhere Auflösung, Pixeldichte und damit Bildqualität möglich.
Schnell können diese kleinen Bildschirme zum laufen gebracht werden.
Hier ein Anschluss Beispiel für ein OLED-Display mit 4 Anschlüssen SSD1306, das per I²C Bus kommuniziert.
Immer vorab das passende Datenblatt des Herstellers nach Gerätenamen, Typ, Funktion, Spannungsversorgung, Auflösung prüfen.
Was ist I²C
I²C, auch bekannt als Inter-Integrated Circuit, ist ein serieller Datenbus, der 1982 entwickelt wurde. Es hat sich zu einem weitgehend akzeptierten Industriestandard entwickelt und wird hauptsächlich für die interne Kommunikation zwischen verschiedenen Schaltungsteilen verwendet, z. B. innerhalb eines Fernsehgerätes oder zwischen einem Controller und Peripherie-ICs.
Die Besonderheit von I²C ist, dass es mit lediglich 2 Leitungen mit normalerweise bis zu 128 Teilnehmern kommunizieren kann. Es handelt sich dabei um eine Taktleitung (SCL) und eine Datenleitung (SDA). Die Datenübertragung erfolgt seriell, d.h., die Daten werden hintereinander über eine Leitung geschickt.
Es gibt verschiedene Übertragungsraten im I²C-Protokoll, darunter der Standardmodus mit 100 kbit/s, der „schnelle“ Modus (Fast-mode) mit 400 kbit/s, der „Fast-mode Plus“ (Fm+) mit bis zu 1 Mbit/s und der „Ultra Fast-mode“ (Ufm), der unidirektionale Übertragungsraten bis zu 5 Mbit/s unterstützt.
Die Kommunikation im I²C-Bus findet immer zwischen einem Master und den Slaves statt. Der Master kann entweder Daten an Slaves senden oder Slaves auffordern, ihm Daten zu schicken. Ein Slave kann jedoch nie von sich aus Daten senden
Verdrahtung:
VCC = 3,3 Volt (Unbedingt vorab die Hersteller Angaben prüfen)
GND = Ground
SCL = Pin 22
SDA = Pin 21
Passende Library / Bibliothek suchen und einbinden
- Gehe ins Sketch Menü.
- Drücke Bibliothek einbinden.
- Öffne Bibliotheken verwalten.
- Suche zB. nach ADAFRUIT GFX und installieren.
- Suche zB. nach ADAFRUIT SSD1306 und installieren.
Code (Auszug aus Library):
Bei mir musste ich noch die SCREEN_ADDRESS von 0x3D auf 0x3C ändern
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
// Show initial display buffer contents on the screen --
// the library initializes this with an Adafruit splash screen.
display.display();
delay(2000); // Pause for 2 seconds
// Clear the buffer
display.clearDisplay();
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(2); // Text größe
display.setTextColor(SSD1306_WHITE);
display.setCursor(10,30); //Erster Wert = Anzahl Pixel von links, bis Schrift beginnt
// Zweiter Wert = Anzahl Pixel von oben, bis Schrift beginnt
display.println(F("Prilchen"));
display.display();
delay(2000);
}
void loop() {
}
Ergebnis: