Anzeige auf einem OLED Display (I2C-Bus)

Hier ein Anschluss Beispiel für ein OLED-Display SSD1306, das per I2C Bus kommuniziert, mit 4 Anschlüssen.
Immer vorab das passende Datenblatt des Herstellers nach Gerätenamen, Typ, Funktion, Spannungsversorgung, Auflösung prüfen.

Verdrahtung:

VCC = 3,3 Volt (Unbedingt vorab die Hersteller Angaben prüfen)
GND = Ground
SDA = I2C Serial Data
SCL = I2C Serial Clock

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.

Eigene Textausgabe bei einem 128 x 64 (1,3 Zoll) Display erzeugen:

#include <SPI.h>
#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
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() 
{
  display.display();
  delay(2000); // Pause for 2 seconds

  // Clear the buffer
  display.clearDisplay();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}

void loop() 
{
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(30,10);   //Erster Wert = Anzahl Pixel von links, bis Schrift beginnt 
                              // Zweiter Wert = Anzahl Pixel von oben, bis Schrift beginnt
  display.println("Gefunden auf");
  display.setCursor(32,35);
  display.println("Prilchen.de");
  display.display();
  delay(2000); // Pause for 2 seconds
}

2. Beispiel bei einem 128 x 32 (0,91 Zoll) Display:

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

#define SCREEN_WIDTH 128 // OLED display weite in pixel
#define SCREEN_HEIGHT 32 // OLED display höhe in pixel
#define OLED_RESET  -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() 
{
  display.display();
  delay(2000); // Pause 2 sekunden

  // Clear the buffer
  display.clearDisplay();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}

void loop() 
{
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(30,5);   //Erster Wert = Anzahl Pixel von links, bis Schrift beginnt 
                              // Zweiter Wert = Anzahl Pixel von oben, bis Schrift beginnt
  display.println("Gefunden auf");
  display.setCursor(32,15);
  display.println("Prilchen.de");
  display.display();
  delay(2000); 
}

Sollten weitere I2C Module zum einsatzkommen könnte das angeben der I2C-Adresse von Nöten sein:
Beispiel-Script aus der Library. Diese benötigt noch die I2C Adresse des Display.

Eine große Menge an Standard I2C Modul Adresse sind bei https://i2cdevices.org zu finden. Hier einfach nach SSD1306 suchen und im Sketch einfügen.

Oder selbst nach der I2C Adresse suchen:
Der Arduino kann aber auch alternativ danach scannen.
Kleines Sketch um die I2C Adresse zu finden:

#include <Wire.h>  //I²C Bibliothek
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

Scanner gibt im Seriellen Monitor dann Auskunft:

Diese Adresse nun in das Beispiel-Script eintragen und dann hochladen.

Display zeigt was an:



Tipp:
Wer lieber ohne Hardware, in einer online Simulation zu diesem Thema experimentieren möchte, findet das bei Wokwi mit der Simulation Adafruit SSD1306 Vitrine

,