Beim Anschluß eines Illi9341 240x320 displays komme ich nicht recht weiter. Meine Umgebung: WIN10, ESP32 und Arduino IDE 2.2.0, in der ich das graphicstest.ino Beispiel zum testen verwende. Das Ergebnis: das display wird angesprochen und zeigt die erwarteten Testbilder, allerdings stimmen Breite und Höhe der Darstellung nicht. Das zeigt sich auch in Diagnostik Ausgabe des Programms:
ILI9341 Test!
Display Power Mode: 0x0
MADCTL Mode: 0x0
Pixel Format: 0x0
Image Format: 0x0
Self Diagnostic: 0x0
Benchmark Time (microseconds)
Screen fill 200221
Text 25994
Lines 252818
Horiz/Vert Lines 18314
Rectangles (outline) 11986
Rectangles (filled) 416251
Circles (filled) 73321
Circles (outline) 112478
Triangles (outline) 55928
Triangles (filled) 154869
Rounded rects (outline) 46621
Rounded rects (filled) 423091
Done!
Verdrahtung und settings --------------------------------- #define _cs 17 // violet TX2/CS #define _dc 16 // blue DC #define _mosi 23 // orange MOSI #define _sclk 18 // green SCK/CLK #define _rst 5 // brown RESET #define _miso // Not connected
// 3.3V // Goes to TFT LED
// 5v // Goes to TFT Vcc
// Gnd // Goes to TFT Gnd
*/
#include <Adafruit_GFX.h> // include Adafruit graphics library #include <Adafruit_ILI9341.h> // include Adafruit ILI9341 TFT library
#define TFT_CS 17 // TFT CS pin is connected to arduino pin 8 #define TFT_RST 5 // TFT RST pin is connected to arduino pin 9 #define TFT_DC 16 // TFT DC pin is connected to arduino pin 10
// initialize ILI9341 TFT library
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
Hat Jemand eine Idee was bei mir geändert werden muß?
Vielen Dank
Das ILLI9341 gibt es, soweit ich das übersehe, in -zig verschiedenen Variationen. Irgend wo, igend wie (Pixel horiontial/vertikal etc.) muß ich doch definieren welche Vatiante benutzt wird. Keine Ahnung wo, was ... aber das Display ist doch sicherlich -zig tausend mal im Einsatz.
Hallo,
bei dem Display habe ich mit diesem Treiber die besten Erfahrungen gemacht.
Allerdings habe ich auch mit der von dir genutzten Library bisher keine Probleme gehabt.
Ein zweites Display könnte evtl. Aufklärung schaffen.
Hi HotSystems,
danke für die Hinweise👍
Tatsächlich mache ich mit einem 2. Display die gleichen Erfahrungen
Mein erster Versuch war auch das display mit der TFT_eSPI anzusteuern. Da musste ich mich erst einmal in die lib reinfummeln bis es schließlich geklappt hat und das auch nur indem ich die settings per compiler direktive gesetzt habe da sie bei mir nicht von der IDE (PlatformIO ) aus dem header-file übernommen werden.
=> https://github.com/Bodmer/TFT_eSPI/discussions/2815
Kannst du mir bei Gelegenheit mal mitteilen wie du das display bei dir zum laufen gebracht hast. Ich denke du arbeitest mit der Arduino IDE und einem AVR-Prozessor.
Hallo MHz,
richtig, ich verwende die Arduino IDE und als Controller AVR sowie ESP32/ESP8266. Im aktuellen Fall den ESP32 mit dem TFT 2,8 oder 3,5 Zoll.
Ich werde später vom PC auch die angepasten Einstellungen für das TFT posten.
Die entsprechende user_setup liegt bei mir im Library-Ordner.
Mit PlatformIO kenne ich mich leider nicht aus.
super HotSystems, das hilft mir bestimmt weiter, danke! Lass dir Zeit, ich werde erst später wieder meine mails anschauen können. Bitte sende mir doch neben der angepassten user_setup auch noch deine Verkabelung IllI <=> ESP32.
Wohin schiebe ich die user_setup? Sorry wenn ich auch das noch fragen muss (library folder oder sketch folder).
Ich bin schon vor langer Zeit von der Arduino IDE auf VScode mit PlatformIO umgestiegen. VScode mit PlatforIO ist anfangs stark gewöhnungsbedürftig, lohnt sich aber ganz bestimmt Falls du es mal probieren möchtest, kann ich dir gerne ein paar Tipps geben, auch wenn ich immer noch auf newbee level bin.
Hallo,
das mit PlatformIO muss ich mir mal durch den Kopf gehen lassen und komme gern darauf zurück.
Hier die entsprechenden Änderungen, nicht die komplette Datei.
User_Setup.h ( liegt in ***\libraries\TFT_eSPI\ )
Je nach Treiber aktivieren, der Rest bleibt deaktiviert (auskommentiert):
Für den ILI9341 im 2,8" TFT
#define ILI9341_DRIVER // Generic driver for common displays
Für den ILI9486 im 3,5" TFT
#define ILI9486_DRIVER
// For ESP32 Dev board (only tested with ILI9341 display)
// The hardware SPI can be mapped to any pins
// läuft auch bei mir mit dem 3,5" TFT und ILI9486_DRIVER
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 15 // Chip select control pin
#define TFT_DC 2 // Data Command control pin
#define TFT_RST 4 // Reset pin (could connect to RST pin)
Weitere Verkabelung:
VDD = 3,3 Volt evtl. 5 Volt (abhängig vom TFT)
GND = GND
BL = 3,3 Volt
Bei der User_Setup.h , #define ILI9341_2_DRIVER // Alternative ILI9341 driver,
auswehlen habe das gleiche Display und funktioniert mit TFT_eSPI 1A
und #define TOUCH_CS 5// Chip select pin (T_CS) of touch screen
auskommentieren dan meckert der Compiler nicht und ist 3 Sek schneller
Bodmer hat in der TFT_eSPI.h drei Sek dellay eingebaut um uns aufmerksam machen
Wie Meinen? TFT_eSPI ist viel besser als Ada, nur wie du auch weist ziemlich schwierig wen man den nicht kennt
Es gibt zwei Versionen vom ILI 9341, bei dem Altem mit SPI Verbindung sind die Farben ein wenig verblasst, bei 8Bit tretet das nicht auf wird ja direkt angesprochen.
Bei allen, die geantwortet haben, bedanke ich mich für ihre Beiträge. Ich glaube aber, mich in meiner ursprünglichen Frage nicht hinreichend klar ausgedrückt zu haben. Es geht mir darum ein ILLI9341 display mit der Adafruit_GFX.h library und dem Adafruit_ILI9341.h driver zum laufen zu bringen, so hatte ich es im ersten Beitrag geschildert.
wie dort so beschrieben.
#include <Adafruit_GFX.h> // include Adafruit graphics library #include <Adafruit_ILI9341.h> // include Adafruit ILI9341 TFT library
was ich leider nicht geschrieben habe - sorry - war, dass ich es schon mit der TFT_eSPI library von Bodmer versucht habe. Das Problem hier war, dass in meiner VScode/PlatformIO Umgebung die Werte aus der header-datei nicht für's kompilieren übernommen werden. So hat es auch Bodmer vermutet.
Wenn also jemand ein ILLI9341 mit Adafruit_GFX und Adafruit_ILI9341 betreibt, würde es mir helfen zu erfahren, wie er/sie es macht. Irgendwie stehe ich im Augenblick völlig verwirrt auf'm Schlauch und komme nicht weiter.
p.s. HotSystems: nurzu, ein PlatformIO Versuch lohnt sich bestimmt. Hast Du TeamViiewer installiert?
Hallo HotSystems dank deiner Anleitung bin ich nun einen Schritt weiter, aber noch nicht ganz am Ziel angekommen. Die Auflösung des displays ist laut Aufdruck 240x320, dargestellt werden aber in x-Richtung deutlich weniger.
tft.fillScreen(ILI9341_BLACK);lässt geschätzte 80 Pixel in x-Richtung aus.
Auch stimmt die Farbzuordnung nicht, blau wird rot dargestellt.
Schwarz bleibt aber schwarz.
tft.invertDisplay(0); Egal ob 0 oder 1, bei 1 wird der Hintergrund weiß
In meinem Sketchbook liegen im library folder Adafruit_GFX und _ILI9341.
Im folder Adafruit_ILI9341 liegt AdafruitILI9341.h und darin finde ich:
This library depends on
Adafruit_GFX being present on your system. Please make sure you have
installed the latest version before using this library.
... #define ILI9341_TFTWIDTH 240 ///< ILI9341 max TFT width #define ILI9341_TFTHEIGHT 320 ///< ILI9341 max TFT height
Hallo,
das Problem sieht mir nach einem falschen Treiber aus. So habe ich es auch schon bei anderen Displays gesehen.
Hast du mal den Treiber für das ST7789 getestet ?
Oder einen anderen Treiber-Chip ?
Bingo!
Du hast den Nagel auf den Kopf getroffen👍 Chapeau!
Nun nur noch die Farbzuordnung umkehren und das wars schon. Na noch nicht ganz, denn ich möchte noch die Touch-Funktion aktivieren.
Der Anfang ist auf jeden Fall gemacht.
Vielen Dank.
p.s. VScode/PlatformIO kann warten, lohnt sich aber auf jeden Fall. Melde dich bei Bedarf😊