TTGO T-Display – Hello World!

Auf Banggood haben sie schon wieder ein neues ESP32-Board vorgestellt. Es gefällt mir sehr gut. Es ist sehr kompakt, hat ein Farb-Display mit 135 x 240 Pixeln, 2 Taster und – (!) – einen USB-C Anschluss! Ich habe mir gleich einmal 2 Stück für 7,16 Euro bestellt. Diese Woche sind sie angekommen und das erste was ich üblicherweise mit neuen ESP32-Boards mache, ist ein Stück Code zum Laufen zu bringen, das alle, oder zumindest die entscheidenden, Features anspricht.

TTGO T-Display

Das ist oft gar nicht so schwer, weil die Hersteller natürlich daran interessiert sind, dass einem das nicht sonderlich schwer fällt. Denn sonst würde das Board ja niemand mehr kaufen. Aber manchmal, vor allem wenn man schon mehrere Jahre eine Arduino-Installation hat und in der Zwischenzeit unzählige Boards getestet, zahllose Bibliotheken installiert, Experimente gemacht und Programme gecodet hat, gibt es unvorhergesehene Probleme.

Heute schreibe ich Euch einfach einmal, wie das beim TTGO T-Display war.

Oft geben die Hersteller auf der Banggood Seite mit dem Produkt einen Verweis an, der direkt auf ein passendes GitHub Projekt führt. Beim TTGO T-Display war das leider nicht der Fall. Also einfach einmal ‘TTGO T-Display’ in Google eingegeben und schon der zweite Eintrag führt zum GitHub Projekt direkt zur Datei ‘TTGO-T-Display.ino’. 🙂

https://github.com/Xinyuan-LilyGO/TTGO-T-Display

Jetzt noch schnell oben auf den Projektnamen geklickt und man kommt zur Hauptseite des Projekts. Dort hole ich mir mit einem Klick auf den grünen Button ‘Clone or download’ und anschließendem Klick auf ‘Download ZIP’ das komplette Projekt als ZIP-Datei auf meinen Rechner.

Dieses entpacke ich und kopiere den Inhalt in mein Projekt-Verzeichnis für ESP32 Projekte. Dabei muss darauf geachtet werden, dass das ‘-master’ im Projektnamen des Projektverzeichnisses entfernt wird!

Anschließend öffnete ich die ‘ino’-Datei im Projekt mit der Arduino IDE und versuchte das Projekt zu kompilieren. Klappte natürlich nicht, da eine Bibliothek gefehlt hat.

TTGO-T-Display:5:21: error: Button2.h: No such file or directory

Ich versuchte ‘Button2’ direkt über ‘Sketch->Bibliotheken einbinden->Bibliotheken verwalten…’ zu installieren. Was leider misslang, da es dort im Dialog über die Suchfunktion nicht möglich war, die Bibliothek ausfindig zu machen.

Also gab ich ‘Arduino Button2’ in Google ein und schon der erste Eintrag führte direkt zum gesuchten Projekt von Lennart Hennings!

https://github.com/LennartHennigs/Button2

Downgeloadet, entpackt und nach ‘C:\Users\USER\Documents\Arduino\libraries’ kopiert. Die Arduino IDE beendet, gleich wieder gestartet und noch einmal kompiliert. Diesmal klappte es und der kompilierte Code wurde auch gleich auf das Board hochgeladen und gestartet. Das Ergebnis? Nichts, ein schwarzes Display!

Hhmm, jetzt sah ich mir einzeln über die Bibliotheksverwaltung die Bibliotheken an. Die ‘TFT_eISP’-Bibliothek hatte ich schon von einem früheren Projekt installiert gehabt. Allerdings war es die Version 1.3.6 und mittlerweile gab es schon die Version 1.4.16! Also einfach einmal die aktuelle Version installiert und noch einmal kompiliert.

Immer noch schwarz!

Also die Bibliothek war es wohl nicht. Jetzt begann ich wieder im Internet zu stöbern und auch die README.MD genauer zu lesen, das hatte ich vorher nämlich nicht gemacht. Dort fand ich zwei entscheidende Sätze:

  • Move or copy User_Setups/TTGO_T_Display.h to TFT_eSPI/User_Setups/
  • Add #include <User_Setups/TTGO_T_Display.h> to TFT_eSPI/User_Setup_Select.h

Danach sah die Sache schon wesentlich besser aus! Das Display wurde angesprochen, bunte Rechtecke und etwas Text erschien, aber irgendwie sah das alles ein bisschen zerstückelt aus und nicht so, wie es ausgesehen hatte, als ich das Board zum ersten Mal eingeschaltet und noch der Hersteller-Code darauf lief.

Übrigens erklären diese beide Zeilen auch, wie man generell mit verschiedenen Displays, die von der Bibliothek ‘TFT_eSPI’ unterstützt werden, umgehen muss! Existiert bei einem Projekt eine Datei für die Bibliothek, so muss sie nach ‘User_Setups’ kopiert und in der TFT_eSPI Datei ‘User_Setup_Select.h’ inkludiert werden!

Da der Code aber problemlos kompiliert, auf das Board geladen wurde und auch schon nahezu funktioniert hatte, tippte ich als nächstes auf einen Fehler im Sourcecode.

Ich änderte die Auflösung in der Zeile:

TFT_eSPI tft = TFT_eSPI(135, 240); // Invoke custom library

Ich probierte Werte von 0 bis 3 in den beiden Zeilen mit:

tft.setRotation(1);

Aber nichts half. Also wieder zurück zu Google. Dort fand ich ein Video:

Das Video zeigte mir nichts Neues, dafür aber der Text darunter:

IMPORTANT NOTE: Comment this line of code #define ILI9341_DRIVER in /User_Setup.h

Überraschenderweise führte dies zu noch viel mehr Fehlern. Hier ein kleiner Ausschnitt davon:

C:\Users\Thomas Ell\Documents\Arduino\libraries\TFT_eSPI\TFT_eSPI.cpp: In member function 'void TFT_eSPI::init(uint8_t)':

C:\Users\Thomas Ell\Documents\Arduino\libraries\TFT_eSPI\TFT_eSPI.cpp:369:21: error: 'TFT_SWRST' was not declared in this scope

else writecommand(TFT_SWRST); // Software reset

Was war das nun wieder? Nun begann ich selbst ein bisschen nachzudenken. Muss man nicht vielleicht für das Auskommentieren eines Treibers für einen bestimmten Display-Typ einen anderen hinein nehmen? Auf der Produktseite steht, dass das Display vom Typ IPS ST7789V ist. Also einfach einmal in der Datei ‘User_Setup.h’ nach ‘ST7789’ gesucht! Und auch prompt fündig geworden. Es gibt eine auskommentierte Zeile:

//#define ST7789_DRIVER

Flugs die beiden ‘//’ am Anfang entfernt, gespeichert und noch einmal kompiliert.

Hurra! Alles funktioniert wie es soll! Das ‘Hello World’ ist fertig und ich kann daran gehen, individuelle Programme für das neue Board zu entwickeln!

Hab gerade gesehen, dass es das Board scheinbar auch bei Amazon gibt:

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.