Wemos D1 mini Shield: 0,66 Zoll OLED Display
Das 0,66 Zoll OLED Display verfügt über eine Auflösung von 64×48 Pixel.

Inhaltsverzeichnis
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

Adafruit SSD1306

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.
1 2 | #define OLED_RESET 0 // GPIO0 Adafruit_SSD1306 display(OLED_RESET); |
1 2 3 4 5 6 7 8 9 10 11 | 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 wiefolgt gesetzt werden:
1 2 3 4 5 6 7 8 9 10 11 12 | //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 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.

Quellcode
Beispiel I – „Hallo Welt!“
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #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); } |
Pingback:Wemos D1 mini Shields & Module - Technik Blog
Pingback:Arduino Projekt: Darstellen von Text und Grafik auf einem OLED isplay - Technik Blog
Pingback:Arduino Projekt: Darstellen von Text und Grafik auf einem OLED Display - Technik Blog
Pingback:Arduino Lektion 69: OpenWeatherMap Daten auf OLED Display anzeigen - Technik Blog