#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED-Display-Breite in Pixel
#define SCREEN_HEIGHT 64 // OLED-Display-Höhe in Pixel
// Deklaration für ein SSD1306-Display, das über I2C (SDA, SCL-Pins) angeschlossen ist
#define OLED_RESET -1 // Reset-Pin # (oder -1, wenn der Arduino-Reset-Pin gemeinsam genutzt wird)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(115200);
// SSD1306_SWITCHCAPVCC = erzeugt die Display-Spannung von 3,3 V intern
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306-Zuweisung fehlgeschlagen"));
for (;;); // Nicht fortsetzen, endlose Schleife
}
// Zeige den Inhalt des initialen Display-Puffers auf dem Bildschirm an
// Die Bibliothek initialisiert dies mit einem Adafruit-Begrüßungsbildschirm.
display.display();
delay(2000); // 2 Sekunden warten
// Lösche den Puffer
display.clearDisplay();
// Zeichne mehrere Kreisdiagramme
drawPieChart(20, 20, 60, 30, "A"); // Kreisdiagramm 1
drawPieChart(60, 20, 45, 75, "B"); // Kreisdiagramm 2
drawPieChart(100, 20, 30, 45, "C"); // Kreisdiagramm 3
// Zeige den Display-Puffer auf dem Bildschirm an.
display.display();
}
void loop() {
}
void drawPieChart(int x, int y, int angle, int total, String label) {
// Zeichne den Kreissektor
display.fillCircle(x, y, 15, WHITE);
display.fillArc(x, y, 30, 30, 90, angle + 90, WHITE);
// Beschriftung des Kreissektors
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(x + 40, y);
display.print(label + ": " + angle + " Grad");
// Achsenbeschriftung
display.setCursor(x - 10, y + 40);
display.print("Wert");
display.setCursor(x + 30, y + 45);
display.print(total);
}
Loading
ssd1306
ssd1306