#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Displaygröße definieren
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// Reset-Pin definieren (nicht verwendet)
#define OLED_RESET -1
// Display-Instanz erstellen
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Beispiel-Bitmap (8x8 Herz)
const unsigned char myBitmap[] PROGMEM = {
0x00, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xf0, 0xff, 0xef, 0x80, 0x01, 0xff, 0xfe, 0x7f, 0xfe, 0x3f, 0x9f, 0xc7, 0xff, 0xc0,
0x01, 0xff, 0xf8, 0xff, 0xef, 0x80, 0x01, 0xff, 0xfe, 0x7f, 0xfe, 0x3f, 0x9f, 0xc7, 0xff, 0xe0,
0x03, 0xff, 0xf8, 0xff, 0xcf, 0x80, 0x01, 0xff, 0xfe, 0x7f, 0xfe, 0x7f, 0x9f, 0xc7, 0xff, 0xf0,
0x03, 0xe0, 0xf8, 0x1e, 0x0f, 0x00, 0x00, 0x0f, 0x80, 0xf8, 0x00, 0x7f, 0xbf, 0xc7, 0x81, 0xf0,
0x07, 0xc0, 0x78, 0x1e, 0x0f, 0x00, 0x00, 0x0f, 0x80, 0xf8, 0x00, 0x7f, 0xbf, 0xc7, 0x81, 0xf0,
0x07, 0x80, 0x78, 0x3e, 0x0f, 0x00, 0x00, 0x0f, 0x80, 0xff, 0xf8, 0x7f, 0xbb, 0xcf, 0x81, 0xe0,
0x07, 0x80, 0x78, 0x3c, 0x1f, 0x00, 0x00, 0x0f, 0x80, 0xff, 0xf8, 0xff, 0xfb, 0xcf, 0xff, 0xe0,
0x07, 0x80, 0xf8, 0x3c, 0x1f, 0x00, 0x00, 0x0f, 0x00, 0xf1, 0xf8, 0xf7, 0xf7, 0xcf, 0xff, 0xc0,
0x07, 0xc0, 0xf8, 0x3c, 0x1e, 0x00, 0x00, 0x1f, 0x01, 0xf0, 0x00, 0xf7, 0xf7, 0xcf, 0xff, 0x80,
0x07, 0xff, 0xf1, 0xff, 0x9f, 0xff, 0x00, 0x1f, 0x01, 0xf0, 0x3d, 0xf7, 0xf7, 0xcf, 0xfc, 0x00,
0x07, 0xff, 0xe3, 0xff, 0x9f, 0xff, 0x00, 0x1f, 0x01, 0xff, 0xfd, 0xf7, 0xe7, 0xdf, 0x00, 0x00,
0x03, 0xff, 0xc3, 0xff, 0xbf, 0xff, 0x00, 0x1f, 0x01, 0xff, 0xf9, 0xf7, 0xe7, 0xdf, 0x00, 0x00,
0x00, 0xff, 0x03, 0xff, 0xbf, 0xfe, 0x00, 0x1e, 0x01, 0xff, 0xf9, 0xe7, 0xe7, 0x9f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x30, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0c,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x30, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x0c,
0x20, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x3f, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x9c, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x99, 0xf0, 0x78, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf9, 0xe0, 0x20, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x70, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfd, 0xf8, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Fortschrittsbalken-Parameter
#define PROGRESSBAR_WIDTH 124
#define PROGRESSBAR_HEIGHT 18
#define PROGRESSBAR_X 2
#define PROGRESSBAR_Y 20
int progressValue = 0;
int progressMax = 100;
int progressStep = 1;
void setup() {
Serial.begin(9600);
// Display initialisieren
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
// Display löschen und Bitmap zeichnen
display.clearDisplay();
display.drawBitmap(0, 0, myBitmap, 128, 64, WHITE);
display.display();
delay(2000);
}
void loop() {
// Fortschrittswert aktualisieren
progressValue += progressStep;
if (progressValue > progressMax) {
progressValue = 0;
}
// Display löschen (außer der Bitmap)
display.clearDisplay();
display.drawBitmap(0, 0, myBitmap, 128, 64, WHITE);
// Fortschrittsbalken zeichnen
//display.drawRect(PROGRESSBAR_X, PROGRESSBAR_Y, PROGRESSBAR_WIDTH, PROGRESSBAR_HEIGHT, SSD1306_WHITE);
int barWidth = map(progressValue, 0, progressMax, 0, PROGRESSBAR_WIDTH);
display.fillRect(PROGRESSBAR_X + 2, PROGRESSBAR_Y + 2, barWidth - 4, PROGRESSBAR_HEIGHT - 4, SSD1306_WHITE);
// Fortschrittswert zeichnen
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor((SCREEN_WIDTH - 12) / 2, (PROGRESSBAR_Y +5) + PROGRESSBAR_HEIGHT + 8);
display.print(progressValue);
//display.print("%");
display.display();
// Aktualisierungsintervall
delay(100);
}