ESP32 und TFT Display

Hallo,

ich versuche seit Tagen ein TFT Display am ESP32 zum Laufen zu bekommen. Bisher leider erfolglos.
Ich nutze Linux, die Arduino IDE mit installierter ESP32 Library und Bodemers TFT_eSPI.
Der ESP ist ein ESP-WROOM-32 211-161007 von AZ-Delivery.


Das Display ein 3,5" TFT Touch LCD mit einem ILI9486.
http://www.lcdwiki.com/3.5inch_Arduino_Display-UNO
In den notwendigen Änderungen in User_Setup.h und User_Setup_Select.h werden die Beispiele,
wie z.B. TFT_Ellipse.ino werden fehlerfrei kompiliert und hochgeladen.
Allerdings ist das Display irgendwie hellgrau.
Genauso wie bei 5V und GND angeschlossen. Sonst ändert sich nichts.

Ich habe mehrere Displays und ESP's und untereinander auch schon ausgetauscht. Am Uno funktionieren die Displays.

Effektiv enthält die User_Setup.h folgende Zeilen:

// ######       EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP        ######

#define ESP32_PARALLEL
#define TFT_PARALLEL_8_BIT

// The ESP32 and TFT the pins used for testing are:

#define TFT_RST  32  // Reset pin, toggles on startup
#define TFT_CS   33  // Chip select control pin (library pulls permanently low
#define TFT_DC   15  // Data Command control pin - must use a pin in the range 0-31
#define TFT_WR    4  // Write strobe control pin - must use a pin in the range 0-31
#define TFT_RD    2  // Read strobe control pin

#define TFT_D2   26  // Pins can be randomly assigned, this does not affect
#define TFT_D3   25  // TFT screen update performance.
#define TFT_D4   17
#define TFT_D5   16
#define TFT_D6   27
#define TFT_D7   14
#define TFT_D0   12  // Must use pins in the range 0-31 for the data bus
#define TFT_D1   13  // so a single register write sets/clears all bits.


// ##################################################################################
//
// Section 3. Define the fonts that are to be used here
//
// ##################################################################################

// Comment out the #defines below with // to stop that font being loaded
// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not
// normally necessary. If all fonts are loaded the extra FLASH space required is
// about 17Kbytes. To save FLASH space only enable the fonts you need!

#define LOAD_GLCD   // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6  // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7  // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

#define SMOOTH_FONT

In der User_Setup_Select.h wurde auskommentiert:

#include <User_Setups/Setup11_RPi_touch_ILI9486.h> // Setup file configured for ESP32 and RPi TFT with touch

Die Touchfunktion und die SD-Karte benötige ich nicht. Ich habe alle Originalbeispiele getestet. Überall das Gleiche.
Ich habe die Pinbelegung schon mehrfach verändert und kontrolliert. Aber nie gabe es auch nur eine einzige Reaktion.
Das Display ist einfach nur grau.
Was mich irritiert ist der LCD_RS Pin auf dem Display.
Den habe ich am ESP mit dem TFT_DC / Pin 15 verbunden.
Das sollte doch eigentlich stimmen? Neustart, Reset, alles erfolglos.
Weiß nicht mehr weiter. Wer kann helfen?

Ich geb's auf. Beim Ausmessen mit dem Oszi und dem Bestimmen der unterschiedliche Signale zwischen der funktionierenden (Uno) und der nicht funktionierenden Konfiguration (ESP) ist mir aufgefallen, daß man die Pinbelegung mittels User_Setup.h zwar ändern kann, dies aber keinerlei Auswirkungen hat. Nach ewigem Herumstöbern habe ich herausgefunden, daß diese in der Setup11_RPi_touch_ILI9486.h, anscheinend eine, für einen ESP8266 optimierte Pinbelegung, wieder überschrieben wird.
Die User_Setup.h mit der Pinbelegung wird garnicht verwendet. Selbst wenn die Pinbelegung direkt in die ino gelegt wird, so wird diese ignoriert und kann nicht verändert werden.

Hallo,

Rubbernose:
Ich geb's auf. Beim Ausmessen mit dem Oszi und dem Bestimmen der unterschiedliche Signale zwischen der funktionierenden (Uno) und der nicht funktionierenden Konfiguration (ESP) ist mir aufgefallen, daß man die Pinbelegung mittels User_Setup.h zwar ändern kann, dies aber keinerlei Auswirkungen hat. Nach ewigem Herumstöbern habe ich herausgefunden, daß diese in der Setup11_RPi_touch_ILI9486.h, anscheinend eine, für einen ESP8266 optimierte Pinbelegung, wieder überschrieben wird.
Die User_Setup.h mit der Pinbelegung wird garnicht verwendet. Selbst wenn die Pinbelegung direkt in die ino gelegt wird, so wird diese ignoriert und kann nicht verändert werden.

der Anfang der User_Setup_Select.h ist doch eigentlich eindeutig:

//#include <User_Setup.h>           // Default setup is root library folder

//#include <User_Setups/Setup1_ILI9341.h>  // Setup file configured for my ILI9341
//#include <User_Setups/Setup2_ST7735.h>   // Setup file configured for my ST7735
//#include <User_Setups/Setup3_ILI9163.h>  // Setup file configured for my ILI9163
//#include <User_Setups/Setup4_S6D02A1.h>  // Setup file configured for my S6D02A1
//#include <User_Setups/Setup5_RPi_ILI9486.h>        // Setup file configured for my stock RPi TFT
//#include <User_Setups/Setup6_RPi_Wr_ILI9486.h>     // Setup file configured for my modified RPi TFT

usw.

entweder wird die User_Setup.h benutzt und man muß den Kram da selbst anpassen oder man kommentiert die aus und nutzt eine der vorgefertigten und ändert notfalls in eben dieser.

Gruß aus Berlin
Michael

Hallo,

ich hab einen ESP32 zusammen mit einem TFT Touch in Betrieb. das TFT war zusammen mit einem Wandgehaüse und einer Grundplatine in einem Set von AZ. Das TFT sieht etwas anders aus als Deines ich denke aber es ist gleich.

Im Grunde stammt die Configration aus einem Beispiel für eine 8266 , musste ich etwas anpassen. Da wird jetzt noch das ein oder andere drin sein das du nicht benötigst.

Bei dem TFT gibt es eine einschaltbare Hintergrundbeleuchtung TFT_LED , wird über einen Pin geschaltete der muss LOW sein.

Wie du das TFT dann ansteuerst wirst Du ja wissen.
Hier die Config , so läuft das bei mir.

Heinz

#include <Adafruit_ILI9341.h>
#include <XPT2046_Touchscreen.h>
#include <Fonts/FreeSans12pt7b.h>
#include <Fonts/FreeMono9pt7b.h>



#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>

//#include <WiFiUdp.h>
#include <ArduinoOTA.h>

#include <time.h>

#include <FS.h>
#include "SPIFFS.h"

// Temp. Sensor intern BS1820 Dallas
#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire(27);
DallasTemperature sensors(&oneWire);



//__Pin definitions for the ESP32 Touchpanel
#define TFT_CS   5
#define TFT_DC   4
#define TFT_MOSI 23
#define TFT_CLK  18
#define TFT_RST  22
#define TFT_MISO 19
#define TFT_LED  15

#define TOUCH_CS 14
#define TOUCH_IRQ 2

// This is calibration data for the raw touch data to the screen coordinates
#define TS_MINX 150
#define TS_MINY 130
#define TS_MAXX 3800
#define TS_MAXY 4000

// Instanz für Touch TFT erstellen
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
XPT2046_Touchscreen ts(TOUCH_CS);
#define BUTON_WIDTH 70    // Grösse der Funktionstasten 
#define BUTON_HIGHT 30