/* 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