Problème de Touchscreen avec un écran ILI9488 et ESP32

Bonjour,

J'utilise une carte ESP32 (ESP32-WROOM-DA Module dans l'IDE) avec un écran TFT ILI9488 (avec la librairie TFT_eSPI).
En utilisant juste la partie écran, je n'ai pas de soucis l'affichage est correct.
Lorsque je veux utiliser la partie touchscreen, ca ne fonctionne plus.

J'utilise Test_Touch_Controller.ino (exemple/TFT_eSPI/Test et Diagnostics/).

#include <SPI.h>
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();

//====================================================================

void setup(void) {
  Serial.begin(115200);
  Serial.println("\n\nStarting...");

  tft.init();
}

//====================================================================

void loop() {

  uint16_t x, y;

  tft.getTouchRaw(&x, &y);

  Serial.printf("x: %i     ", x);

  Serial.printf("y: %i     ", y);

  Serial.printf("z: %i \n", tft.getTouchRawZ());

  delay(250);
}

//====================================================================

Rien ne se passe lorsque je touche l'écran, les valeurs dans le moniteur série restent à 0.

Je pense avoir configurer correctement le user_setup.h, les valeurs sont bien celles sur l'ESP32.

#define USER_SETUP_INFO "User_Setup"
#define ILI9488_DRIVER
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 5   // Chip select control pin
#define TFT_DC 2   // Data Command control pin
#define TFT_RST 4  // Reset pin (could connect to RST pin)

#define TOUCH_CS 17

#define SPI_FREQUENCY 27000000

#define SPI_TOUCH_FREQUENCY 2500000

A priori T_DO, T_DIN et T_CLK sont partagés avec la partie écran (même broches sur l'ESP32)
L'alimentation de l'écran se fait par le 3.3v de l'ESP32.

Ou ai je raté un truc ?

Merci
remi

D'abord, es-tu sûr que l'écran soit tactile ? Parfois, sur Aliexpress, on trouve des produits vendus comme des écrans tactiles qui en fait ne le sont pas.
Il faut vérifier la présence de la puce chargée du tactile, comme ici :

Si tu as des doutes, poste des photos de ton écran, recto et verso.

Ensuite, tu dois définir le touchscreen dans ton code.

// Touchscreen pins
#define XPT2046_IRQ 36   // T_IRQ
#define XPT2046_MOSI  23// T_DIN
#define XPT2046_MISO 19// T_OUT
#define XPT2046_CLK 18// T_CLK
#define XPT2046_CS 17// T_CS

SPIClass touchscreenSPI = SPIClass(VSPI);
XPT2046_Touchscreen touchscreen(XPT2046_CS, XPT2046_IRQ);

Tu peux trouver un tutoriel ici :

C'est pour un ILI9341, qui a une moins bonne définition (240 x 320 au lieu de 480 x 320 pour le tien) : il faut l'adapter un peu.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.