TLScript-Programmierung mit OLED

von Martin Müller 

Elektronik-Labor  Projekte  Mikrocontroller  TLScript  




Download: OledTPS1007.zip

Video: https://youtu.be/g8vRG6M8qHQ

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



Download: Zettel-IDE.pdf

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



Elektronik-Labor  Projekte  Mikrocontroller  TLScript