Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Wemos D1 mini Shield: 0,66 Zoll OLED Display

Posted on 18. Februar 20182. Mai 2023 by Stefan Draeger

Das 0,66 Zoll (1,68 cm) OLED Display verfügt über eine Auflösung von 64×48 Pixel.

Wemos D1 mini 0,66" OLED Display
Wemos D1 mini 0,66″ OLED Display

  • Technische Daten
  • Benötigte Bibliotheken
    • Adafruit GFX Bibliothek
    • Adafruit SSD1306
  • Programmieren des Displays
    • Initialisieren des Displays
    • Texte
    • Begrenzungen des Displays
  • Quellcode
    • Beispiel I – „Hallo Welt!“
    • Beispiel II – Temperatur & Luftdruck darstellen

Technische Daten

  • Auflösung – 64 x 48 Pixel
  • Betriebsspannung – 3.3 V
  • Treiber IC Version – SSD1306
  • IIC Adressen 0X3C oder 0X3D

Benötigte Bibliotheken

Für den Betrieb am Wemos D1 mini werden zwei Bibliotheken benötigt, welche über die Arduino IDE eingebunden werden können. Dazu navigiert man als Erstes über das Menü „Sketch“ -> „Bibliothek einbinden“ -> „Bibliotheken verwalten…“

In dem nun neu geöffneten Dialog wird der Suchbegriff eingegeben (1) und danach auf die Schaltfläche Installieren (2) geklickt.

Bevor man einen Suchbegriff eingeben kann, müssen erst einige Daten aus dem Internet geladen werden, dieses kann je nach Internetgeschwindigkeit dauern.

Adafruit GFX Bibliothek

Installieren der Adafruit GFX Bibliothek
Installieren der Adafruit GFX Bibliothek

Adafruit SSD1306

Installieren der Adafruit SSD1306 Bibliothek
Installieren der Adafruit SSD1306 Bibliothek

Programmieren des Displays

Nachdem die beiden benötigten Bibliotheken eingebunden wurden, kann nun mit dem Programmieren eines Sketches begonnen werden.
Jedoch ist die Bibliothek Adafruit SSD1306 nicht für Displays mit einer Auflösung von 64 x 48 Pixel entworfen, daher ist die Positionierung des Cursors mit der Funktion „setCursor(Spalte, Zeile)“ nicht bei Wert 0,0, sondern bei 32,8.

Initialisieren des Displays

Bevor man einen Text oder eine Zeichenkette auf dem Display ausgeben kann, muss zuerst das Display initialisiert werden, beim 0,66″ OLED Shield ist dieses relativ einfach denn das verfügt über 2 feste Pins welche nicht anders gesteckt werden kann.

Okay man könnte auch das Shield auf ein Breadboard stecken und dann mit Breadboardkabeln an einen anderen Microcontroller stecken und somit können ggf. andere Pins infrage kommen.
In diesem Tutorial gehe ich jedoch auf die Verbindung mit einem Wemos D1 mini ein.

#define OLED_RESET 0  // GPIO0
Adafruit_SSD1306 display(OLED_RESET);
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(); 
}

Texte

Eine Zeichenkette / Text kann wie folgt gesetzt werden:

//Alle Zeichen auf dem Display löschen
display.clearDisplay();
//Textgröße auf 1 (das kleinste) setzen
display.setTextSize(1);
//Textfarbe weiß
display.setTextColor(WHITE);
//Textposition oben, links
display.setCursor(32,8);
//Zeichenkette mit Zeilenumbruch
display.println("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
//Zeichenkette anzeigen
display.display();

Begrenzungen des Displays

Das Display hat eine Größe von 0,66 Zoll (1,68 cm) und 64 x 48 Pixel.

Wenn man eine Zeichenkette darstellen möchte, kann man bei einer Textgröße von 1 also 10 Zeichen in einer Reihe und 3 Reihen darstellen.

Wemos D1 mini OLED Display Shield mit Text
Wemos D1 mini OLED Display Shield mit Text

Quellcode

Beispiel I – „Hallo Welt!“

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 
#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET);
 
void setup()   {
  Serial.begin(9600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  display.clearDisplay(); 
}

void loop() {
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(32,8);
  display.println("Hallo Welt!");
  display.display();
  delay(2000);
}

Beispiel II – Temperatur & Luftdruck darstellen

Mit einem Dual Base Shield, dem Wemos D1 mini DHT11 Shield und dem folgenden Quellcode kann man sich nun die Daten des DHT11 Sensors bequem, auf dem Display ausgeben lassen.

Wemos D1 mini mit DHT11 und 0,66" OLED Display Shield
Wemos D1 mini mit DHT11 und 0,66″ OLED Display Shield
#include "DHT.h" //DHT Bibliothek
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET);

//Pin an welchem der DHT11 Sensor angeschlossen ist.
//Beim DHT11 Shield ist es der digitale Pin D4.
#define DHTPIN D4 
 
//Festlegen welcher Typ von DHT Sensor verwendet wird.
#define DHTTYPE DHT11

//Initialisieren des Sensors mit dem Anschluss und dem Typ
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
  Serial.begin(9600); //Begin der seriellen Kommunikation mit 9600 Baud.
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  delay(2000);
  display.clearDisplay(); 
  dht.begin(); //DHT Kommunikation beginnen.
}
 
void loop() {
  //Der DHT11 Sensor liefert alle 2 Sekunden einen neuen
  //Wert daher lohnt es sich nicht die loop konstant durchlaufen 
  //zu lassen.
  delay(2000);
 
  //lesen der Luftfeuchtigkeit
  double luftfeuchtigkeit = dht.readHumidity();
  //lesen der Temperatur in Grad Celsius
  double temperaturC = dht.readTemperature();
  //lesen der Temperatur in Grad Fahrenheit
  //mit dem Boolean Parameter wird "gesteuert" ob
  //die Temperatur in Fahrenheit oder Celsius ausgegeben wird.
  double temperaturF = dht.readTemperature(true);
 
  //Prüfen ob die Werte erfolgreich gelesen wurden.
  if (isnan(luftfeuchtigkeit) || isnan(temperaturC) || isnan(temperaturF)) {
    Serial.println("Fehler beim lesen von Daten.");
    return;
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  
  display.setCursor(32,8);
  display.println("DHT11");

  display.setCursor(32,9);
  display.println("_____");
    
  display.setCursor(32,17);
  String tempValue = String(temperaturC);
  display.println("T: "+tempValue+"C");

  display.setCursor(32,25);
  String humValue = String(luftfeuchtigkeit);
  display.println("H: "+humValue+"%");
  
  display.display();
  delay(2000);
}

8 thoughts on “Wemos D1 mini Shield: 0,66 Zoll OLED Display”

  1. Dieter Deck sagt:
    8. Mai 2019 um 21:58 Uhr

    Hallo Stefan,
    das WEMOS D1 mit dem WEMOS TFT 1.4 bekomme ich mit „Hallo Welt“ nicht zum Laufen.
    Das Hochladen funktioniert.
    Welche Pins vom D1mini werden benutzt?
    An D5 SCK, D7 MOSI würde ich Signale erwarten, kommt aber nichts
    Wo sind SCK, MOSI, DC anzuschließen? CS liegt auf Masse.
    Muß RST zwingend mit dem Reset des Prozessors verbunden sein, oder kann RST mit +3,3V verbunden werden?
    Ich bin am Ende meiner Kunst und für Deine Hilfe ich im Voraus dankbar.

    Freundliche Grüße aus dem Südwesten
    Dieter Deck

    Antworten
  2. Dieter Deck sagt:
    8. Mai 2019 um 22:00 Uhr

    Hallo Stefan,
    das WEMOS D1 mit dem WEMOS TFT 1.4 bekomme ich mit „Hallo Welt“ nicht zum Laufen.
    Das Hochladen funktioniert.
    Welche Pins vom D1mini werden benutzt?
    An D5 SCK, D7 MOSI würde ich Signale erwarten, kommt aber nichts
    Wo sind SCK, MOSI, DC anzuschließen? CS liegt auf Masse.
    Muß RST zwingend mit dem Reset des Prozessors verbunden sein, oder kann RST mit +3,3V verbunden werden?
    Ich bin am Ende meiner Kunst und für Deine Hilfe ich im Voraus dankbar.

    Freundliche Grüße aus dem Südwesten
    Dieter Deck

    Antworten
    1. Stefan Draeger sagt:
      10. Mai 2019 um 07:20 Uhr

      Hi Dieter,

      das Shield Wemos TFT 1.4 kenne ich jetzt nicht, jedoch gibt es für dieses eine Wiki Seite
      https://wiki.wemos.cc/products:d1_mini_shields:tft_1.4_shield
      Hier sind die Pins welche du mit dem Wemos D1 mini verkabeln musst benannt.

      Gruß,

      Stefan Draeger

      Antworten
  3. Michael Balzer sagt:
    7. Oktober 2019 um 18:25 Uhr

    Hallo Stefan,

    das Modul hängt sich auf wenn man einen Reset während eines Zeichenvorgangs (oder Buffer-Wechsels?) auslöst, es bleibt teils ein halb gezeichnetes Display stehen. Der D1 läuft normal hoch & weiter, nur das OLED reagiert danach auf nichts mehr — nicht mal auf weitere Resets. Nur ein Kaltstart bringt es wieder ans Laufen.

    Wo finde ich den Schaltplan für dieses Modul? Ist die Reset-Leitung des SSD1306 evtl. nicht mit dem D1-Reset verbunden, so wie beim Wemos-Shield v1?

    https://wiki.wemos.cc/_media/products:d1_mini_shields:mini_oled.pdf

    Bei v2 haben Wemos einen Lötjumper für die Reset-Leitung eingeführt.

    Danke & Gruß
    Michael Balzer

    Antworten
  4. Jürgen Piekarski sagt:
    12. August 2020 um 15:57 Uhr

    ich verwende Wemos D1 mini Shield: 0,66 Zoll OLED Display und habe es direkt auf die Pins vom D1 mini gesteckt das Programm wird auf den D1 geladen, aber am Ende kommt die Meldung
    Leaving…
    Hard resetting via RTS pin…

    und nicht geht, was mache ich falsch ?

    Antworten
  5. Jürgen Piekarski sagt:
    12. August 2020 um 17:01 Uhr

    Hi Dieter,
    ich verwende Wemos D1 mini Shield: 0,66 Zoll OLED Display und habe es direkt auf die Pins vom D1 mini gesteckt das Programm wird auf den D1 geladen, aber am Ende kommt die Meldung
    Leaving…
    Hard resetting via RTS pin…

    und nicht geht, was mache ich falsch ?

    Antworten
  6. Thomas Schmidt sagt:
    23. August 2020 um 12:03 Uhr

    Hallo,
    wie Dieter habe ich das gleiche Problem,
    beide Bibliotheken sind eingebunden,
    auch kompilieren und hochladen klappt einwandfrei,
    am Display aber nichts oder nur das was zuvor zu sehen
    war bleibt.
    Der Lötjumper ist auf 0x3C eingestellt
    Das Shield habe ich auch einfach auf den Wemos D1
    kompatibel aufgesteckt.
    Woran könnte das liegen, daß nichts angezeigt wird ?
    Vielen Dank
    Thomas

    Antworten
    1. Stefan Draeger sagt:
      23. August 2020 um 21:05 Uhr

      Hallo Thomas,
      Hallo Dieter,

      ich habe mir einmal die Zeit genommen und mir das Problem angeschaut. Es ist wohl nun so das die aktuelle Bibliothek nicht mehr kompatibel mit dem Display ist und der Wemos D1 mini einen Reset durchführt.
      Das würdest du zbsp. in dem seriellen Monitor der Arduino IDE sehen.

      Ich werde ein Update zu diesem Beitrag schreiben und veröffentlichen.

      Gruß und Danke,

      Stefan Draeger

      Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}