--- Update 19.10.2018 ---
Verbesserung beim OLED Treiber:
Scrollen funktioniert jetzt ohne Pufferspeicher, redundante Funktionen
wurden entfernt.
Skalieren der Textausgabe (Strecken der Pixel in X- und Y-Richtung)
wurde vereinfacht.
Text außerhalb des Sichtbereichs wird abgeschnitten (Clipping).
--- ---
Im Zip-File liegen zwei Demo-Projekte, für den ESP8266 (hier am Beispiel
des Wemos D1 Mini Moduls) mit OLED (128x64, IIC Interface).
Verindung zwischen OLED und D1 Mini:
1 | OLED - D1-Mini
|
2 | GND - G
|
3 | VCC - 3V3
|
4 | SCL - D1 (SCL)
|
5 | SDA - D2 (SDA)
|
Beispiel 1 - Web1234Oled
Das erste Beispiel "Web1234Oled" basiert auf dem Programmcode von Stefan
Thesen. Der ESP erzeugt hierbei ein eigenes WLAN im AP Mode. Die
Programmvorlage wurde um Soft-AP, OLED-Ansteuerung und
Nachrichtenanzeige erweitert.
Die Verbindungsdaten werden beim starten kurz als Übersicht angezeigt:
1 | SSID: ESP-IP 1.2.3.4
|
2 | PASS: 12345678
|
3 | URL: http://1.2.3.4
|
Soft-AP
Der ESP ist mittels Soft-AP unter der IP-Adresse 1.2.3.4 erreichbar.
Dies ist einfacher zu merken als die Default IP 192.168.4.1. Da der ESP
der einzig erreichbare Host in seinem eigenen WLAN ist, stört es nicht,
dass die IP keine offiziell private Netzwerkadresse ist. Wen es stört,
der kann es im Quelltext leicht abändern z.B: in 10.2.3.4.
OLED-Ansteuerung
Die OLED-Lib funktioniert im wesentlichen ohne RAM-Buffer, da sie
Zeichen direkt auf das Display schreibt. Daher ist der auszugebende Text
in Y-Richtung nicht frei positionierbar, sondern nur im 8-Zeilen Raster
(Y-Koordinaten 0..7). Horizontal kann pixelgenau positioniert werden.
Um einen Text auf dem kleinen Display auf Entfernung besser erkennen zu
können, kann die Textausgabe skaliert werden, siehe Beispielprogramm
(oled.scaleX, oled.scaleY). Die Zeichen können somit vergrößert
angezeigt werden. In Y-Richtung stehen die Werte 1,2 und 4 für die
Skalierung zur Verfügung, in X-Richtung ist es frei, sinnvoll sind die
Werte 1,2,3 und 4.
Nachrichtenanzeige
Neben den Buttons für LED ein/aus der Programmvorlage von Stefan Thesen
wurde ein Eingabefeld für Nachrichten im HTML-Code ergänzt. Nachrichten
werden auf dem Display als vergrößerte Laufschrift angezeigt werden.
Beispiel 2 - WiFiScanOled
Das zweite Beispiel ist ein simpler WiFi-Scanner, der Netzwerknamen auf
dem Display in Reihenfolge der Signalstärke sortiert anzeigt.
Zunächst erscheinen nur die Namen in großer Laufschrift. Offene
unverschlüsselte Netze sind mit "(*)" vor dem Namen markiert.
Anschließend erfolgt die Anzeige mit weiteren Infos als verkleinerte
Übersicht.
Die oberste Zeile dient dabei als Statusanzeige.
"nn W" zeigt die Anzahl der gefundenen WLANs an.
"*n" zeigt die Anzahl unverschlüsselter WLANs (z.B. öffentliche
Hotspots) an.
"->" signalisiert den nächsten Scan-Vorgang.