Hier meine TLScript-TPS-Erweiterung mit einem OLED. Tatsächlich habe ich
einen Tag damit verbracht, ein OLED an die TPS anzuflanschen. Der
große Vorteil ist natürlich, dass man auf den ersten Blick sieht, was
unter der entsprechenden Adresse abgelegt ist.
Es hat lange gedauert bis ich in der Arduino-IDE die passende Library
gefunden hatte. Da gibt es zwar gefühlt über 20 Libraries, die das
können, bei den meisten ist I2C aber auf GPIO4 und GPIO5
"festgenagelt". Das lässt sich dann auch nicht einfach und schnell
ändern, dafür müsste man tief einsteigen. "OLED SSD1306 - SH1106"
bildet I2C offensichtlich softwaremäßig im Bit-Bang-Modus nach. Damit
kann man die I2C-Pins dann wirklich komplett frei wählen.
Die Library hat aber auch Nachteile: Es gibt nur zwei
Schriftgrößen, aber grundsätzlich mehrere verschiedene Befehle um Text
ins Display zu schreiben. Damit man die große Schrift verwenden kann,
MUSS man den "Text" mit dem Befehl
"display.draw_string(22,14,("Text"),OLED::DOUBLE_SIZE);" ausgeben.
"Text" MUSS dabei (nur bei diesem speziellen Befehl) "const char*"
sein, INT, String, Char sind dabei (anders als bei den anderen
angebotenen Befehlen) nicht möglich. Diese wertvollen Hinweise findet
man leider nicht auf der entsprechenden Github-Seite, wenn man auf
"More Info" im Bibliotheksverwalter klickt. Das darf man selber durch
etliche Kompilierungsversuche in der IDE herausfinden.
Mein OLED kommt in dieser Anwendung mit deutlich weniger als 10 mA
aus. Deshalb wird die Versorgungsspannung einfach über GPIO18 zur
Verfügung gestellt. Alle Features der bisherigen TPS-Versionen bleiben natürlich
erhalten.
Ein Test mit 128 x 64 Pixeln, B.K.
Gerade hatte ich ein zweifarbiges OLED im breiten Format zur Hand.
Angeschlossen - funktioniert. Bei unveränderter Software wird
anscheinend nur jede zweite Pixel-Zeile angesteuert. Die Anzeige ist
sehr gut lesbar. Die obere Zeile mit ADR CMD DAT wird zwar
auf die beiden Farben aufgeteilt, bleibt aber erkennbar. Anfangs hatte
ich noch das LED-Display und den Encoder mit dran, aber die Bedienung
mit den drei Tasten hat mir am besten gefallen. Deshalb betreibe ich
nun diese kompakte Version. Man kann sehr bequem ganze Programme
eingeben, sodass die Unabhängigkeit von einem PC realistischer wird.
Dass ich den Controller umdrehen musste führt dazu, dass nun das Bit 0
in der LED-Reihe rechts liegt und der Binärdarstellung entspricht. Das
macht die Sache noch einfacher.
Eine letzte Änderung von Martin Müller
Jetzt sind GPIO15 und GPIO14 nach GPIO17 und GPIO21 umgezogen. Damit
kann man das OLED und die Taster auf eine Platine setzen und mit einem
siebenpoligen Pfostenstecker an den Controller anschließen. Aber auch
der Rotaryencoder an den neuen Pins funktioniert wie gewohnt. GPIO18
und GPIO22 sind zur OLED-Versorgung auf je 12 mA konfiguriert. Aktuell
wird aber nur GPIO18 verwendet. Wenn man dann irgendwann komplett aufs
OLED umgestiegen ist und die 7-Segmentanzeige nicht angeschlossen ist,
stehen GPIO0 bis GPIO15 zur freien Verfügung.
Hier die neueste Software:
OledTPS1011.zip
Die Zettel-IDE von Martin Müller
Vor ziemlich genau 40 Jahren *ächz*, als ich bei einer Weltfirma das
Programmieren in Maschinensprache erlernte, wurde dazu eine Zettel-IDE
verwendet. Wir hatten ja nichts... Ich denke, dieses modifizierte Teil
ist selbsterklärend. Druckt man es beidseitig aus, kommt man mit 3 DIN
A4 Blättern aus. In den meisten Fällen wird man wohl mit den Ausdrucken
der ersten beiden Seiten auf einem Blatt hinkommen.
Diese beiden "Lichtchen" mit 8 LEDs an GPIO0 bis GPIO7 konnte ich
damit ganz schnell mit 3 Tasten und OLED programmieren:
0x00 09 FF
0x01 02 00
0x02 01 01
0x03 45 00
0x04 19 FA
0x05 19 FA
0x06 31 00
0x07 22 02
0x08 20 03
0x00 09 FF
0x01 02 00
0x02 01 01
0x03 45 00
0x04 19 FA
0x05 19 FA
0x06 31 00
0x07 22 09
0x08 20 03
0x09 01 40
0x0A 45 00
0x0B 19 FA
0x0C 19 FA
0x0D 32 00
0x0E 22 10
0x0F 20 0A
0x10 01 02
0x11 20 03