Hallo,
Ich habe ein 8 Bit paralleles Display an den ESP32 angeschlossen. Es ist alles verkabelt und funktioniert wie es sollte, aber ich kann keine Möglichkeit finden, die Touch-Funktion zum Laufen zu bringen. Ich weiß, dass die TFT_eSPI-Bibliothek von Bodmer kein Touch mit Displays mit paralleler Schnittstelle unterstützt, daher wollte ich wissen, ob es eine andere Bibliothek gibt, die die Touch-Funktion ermöglicht. Was muss ich sonst noch beachten, wenn ich das machen möchte?
nach der touch_pen.ino aus dem Demo-Archiv von Reichelt hat das Display keinen Touchcontroller, es werden also die Widerstandswert vom Arduino ausgewertet. Ich habe damals mit solchen Touch-Displays eigentlich mehr Ärger als Funktion gehabt. Ob es eine Lib für den ESP32 dazu gibt? Nötig sind 4 GPIO, davon müssen 2 zur Laufzeit auf ADC umschaltbar sein. Prinzipiell kann der ESP32 das ja.
Zumindest ha da jemand schonmal was gebaut: https://github.com/dracir9/ESP_TouchScreen
Ich habe jetzt Bilder dieses Displays gefunden, helfen mir aber nicht weiter, weil die Bezeichnungen der beiden ICs nicht lesbar sind und die Beschriftung der Leiste seltsam ist, dort ist der SPI-Bus der SD-Karte mit rausgeführt, aber kein Hinweis auf den Touch.
Die Frage ob ein Touch-Controller drauf ist (IC XT2046 o.ä.), wurde ja schon gestellt.
Ich vermute ja, daß keiner drauf ist.
Danke für den Link, ich habe es mit dieser Beschreibung versucht, leider bekomme ich nichts angezeigt. Zum Touch hätte ich zumindest eine wage Idee, die ich nun leider nicht testen kann, also nur theoretisch.
Entnommen aus dem Programm für den Mega2560, Pins geändert auf ESP32:
#include <TouchScreen.h> // https://github.com/adafruit/Adafruit_TouchScreen
...
#define YP 14 // auch LCD_RS, must be an analog pin
#define XM 12 // auch LCD_WR, must be an analog pin
#define YM 18 // can be a digital pin
#define XP 17 // can be a digital pin
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
...
void loop(void) {
TSPoint p = ts.getPoint();
// if sharing pins, you'll need to fix the directions of the touchscreen pins
//pinMode(XP, OUTPUT);
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
//pinMode(YM, OUTPUT);
...
}
Das mußt Du ohne Funk testen, weil sonst ADC2 nicht funktioniert. Mit Funk müßtest Du 12 und 14 auf 32 und 33 verlegen.
Das Display in diesem Thema hat aber 8 Bit parallel.
Da das Display auf einem UNO Platz finden soll, sind die analogen Pins mit denen des Displays doppelt belegt. Man muß also unterscheiden, ob ein analoger Tochwert ausgelesen oder eine Anzeige verändert werden soll.
Außerdem mißt ein UNO 0 bis 1023, ein ESP32 0 bis 4095.