/* ESP32 Demo-Board mit OLED-Display
 * Es die Bibliothek benötigt: 
 * https://github.com/ThingPulse/esp8266-oled-ssd1306
 */
#include <Wire.h>
#include "SSD1306Wire.h"
#define SCREEN_WIDTH 128            // OLED Display Breite, in Pixel
#define SCREEN_HEIGHT 64            // OLED Display Höhe, in Pixel
SSD1306Wire display(0x3c, 21, 22);  // 21=SDA 22=SCL I2C-Bus Pins
//***** globale Variablen *************************************************
long showtime;
int x, y;  // Pixel-Koordinaten für das Display
bool scrollX, scrollY;
// ***** Initialisierung **************************************************
void setup() {
  display.init();                  // Initialisierung des OLED
  display.flipScreenVertically();  // Ausrichtung passend zur Platine
  // Schriftgröße einstellen. ArialMT mit 10/16/24 Punkten
  display.setFont(ArialMT_Plain_16);                  // mittlere Schriftgröße auswählen
  display.drawString(0, 0, "Hallo BKI");              // 16 Punkt Höhe ist gewählt
  display.drawString(0, 15, "Test äöüß°^€@");         // gehen alle Sonderzeichen?
  display.drawString(0, 31, "01234567890123456789");  // wie viel passt rein?
  display.setTextAlignment(TEXT_ALIGN_CENTER);        // Text zentriert
  display.drawString(63, 47, "Mittig");               // ausgeben
  display.display();                                  // Texte jetzt ausgeben
  delay(1000);
  display.setTextAlignment(TEXT_ALIGN_LEFT);  // Text wieder linksbündig
  x = 2;                                      // Startposition setzen
  y = 2;
  scrollX=true;
  scrollY=true;
}
// ***** Endlosschleife ***************************************************
void loop() {
  String Text1 = "Hallo";
  if ((millis() - showtime) >= 1000) {  // nach 1 Sekunde…
    display.clear();                    // erst mal alles löschen
    showtime = millis();                // letzte Ausführungszeit speichern
    display.drawString(x, y, Text1);    // String-Variable ausgeben
    char Text[20];                      // Textformatierung mit sprintf.
    sprintf(Text, "%5ld", showtime);    // Zeit (in ms) in char-Array
    display.drawString(40, 10, Text);   // schreiben und ausgaben
    display.display();                  // Ausgabe anzeigen lassen.
    if(scrollX) x += 5;
    else x -=5;
    if (scrollY) y += 4;                          // Text ‚Hallo‘ nach unten scrollen,
    else y -= 4;
    if (x >= 120) scrollX = false;                 // schon hinten? Richtung ändern!
    else if (x <=2) scrollX = true;
    if (y >= 60) scrollY = false;                 // schon unten? Richtung ändern!
    else if (y <=2) scrollY = true;
    
  }
}
Taster2
Taster4
LED32
LED33
ESP32 Schulboard mit LEDs und Tastern, I2C-Bus mit Standard-Belegung
SSD1306 Display
WS2812 an Pin26