In diesem kleinen Projekt möchte ich nun zwei Namen sowie ein Herz auf dem Wemos D1 mini OLED Display Shield anzeigen.
Die Idee zu diesem Mini Projekt entstand aus einer eMail eines Lesers meines Blogges, dieser hatte mich gefragt ob das möglich ist einen Text & ein Herz auf dem 0,66Zoll Display anzuzeigen. Somit kann ich nur bestätigen: „Ja es ist möglich.“.
Das Wemos D1 mini OLED Display Shield habe ich bereits im Tutorial Wemos D1 mini Shield: 0,66 Zoll OLED Display vorgestellt. Daher möchte ich in diesem kurzen Beitrag auf das kleine Projekt eingehen.
Es soll wie eingangs erwähnt zwei Namen sowie ein kleines Herz angezeigt werden, das Herz kann man entweder als XBM Grafik laden oder aber Pixel für Pixel erzeugen. Da ich mit der XBM Grafik und der Adafruit SSD1306 Bibliothek keinen Erfolg hatte, habe ich mich für das Zeichnen per Pixel entschieden.
Wenn man die Grafik jedoch per Pixel zeichnen möchte so muss man etwas umdenken ansonsten wird die Grafik um 90 Grad verkehrt angezeigt.
Quellcode
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 0 // GPIO0 int herzPixels[24][24] = { {BLACK,BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK}, {BLACK,BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, {BLACK,BLACK,BLACK,WHITE,WHITE,WHITE,WHITE,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK,BLACK}, }; Adafruit_SSD1306 display(OLED_RESET); String name1 = "Stefan"; String name2 = "Anna"; void setup() { //initialisieren mit der I2C Adresse 0x3C für das 64 x 48 Pixel große Display. display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //display starten display.display(); //kleine Pause von 2 sek. //Das Display und die Bibliothek startet, auf dem Display erscheint arda..... delay(2000); //Alle Zeichen auf dem Display löschen. display.clearDisplay(); //Textgröße auf 1 (das kleinste) setzen display.setTextSize(1); //Textfarbe weiß display.setTextColor(WHITE); display.setCursor(38,8); display.println(name1); display.setCursor(70,25); display.println(name2); zeichneHerz(38,18); display.display(); } void zeichneHerz(int x, int y){ for(int i=0;i<21;i++){ for(int a=0;a<16;a++){ int value = herzPixels[i][a]; display.drawPixel(x+i, y+a,value); } } } void loop(){ }