Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
ESP 32 avec afficheur
Bonjour à tous,

J'ai enfin réussi à afficher quelque chose sur mon module ESP32 avec écran JC2432W328C (dalle capacitive) avec la version 14.02 en mettant les parametres suivants dans le fichier "Ecran.h"

class LGFX : public lgfx::LGFX_Device {
  //lgfx:Tongueanel_ILI9341 _panel_instance;
  lgfx:Tongueanel_ST7789 _panel_instance;
...

#define LCD_MOSI 13
#define LCD_MISO 12
#define LCD_SCK 14
#define LCD_CS 15
#define LCD_RST -1
#define LCD_DC 2
#define LCD_BL 27

Du coup la page d'accueil s'affiche bien, par contre le touchpad ne fonctionne pas!
Bon ce n'est pas le même controleur que celui de l'ESP32-2432S028R
Celui de mon module semble être un CST820 qui se branche en I2C et non pas en SPI

Voici donc les modifications que j'ai apporté mais qui ne semblent pas donner de résultat

class LGFX : public lgfx::LGFX_Device {
  //lgfx:Tongueanel_ILI9341 _panel_instance;
  lgfx:Tongueanel_ST7789 _panel_instance;
  lgfx::Bus_SPI _bus_instance;
  //lgfx::Touch_XPT2046 _touch_instance;
  lgfx::Touch_CST816S _touch_instance;  //should able to drive CST820  <<================modif
  lgfx::Light_PWM _light_instance;
......
  {
      auto cfg = _touch_instance.config();

      cfg.x_min = 0;
      cfg.x_max = 239;
      cfg.y_min = 0;
      cfg.y_max = 319;
      cfg.pin_int = TOUCH_IRQ;
      cfg.bus_shared = true;
      cfg.offset_rotation = 0;

      /*  partie commentée
      cfg.spi_host = VSPI_HOST;
      cfg.freq = 1000000;
      cfg.pin_sclk = TOUCH_SCK;
      cfg.pin_mosi = TOUCH_MOSI;
      cfg.pin_miso = TOUCH_MISO;
      cfg.pin_cs = TOUCH_CS;
      */
      cfg.i2c_port = 1;//I2C_NUM_1;
      cfg.i2c_addr = 0x15;
      cfg.pin_sda  = 33; 
      cfg.pin_scl  = 32;
      cfg.pin_rst  = 25; 
      cfg.freq = 400000; 

      _touch_instance.config(cfg);
      _panel_instance.setTouch(&_touch_instance); 
    }

    setPanel(&_panel_instance); 

Et finalement l'affectation des pins pour mon module
IO2 TFT_RS
IO4 LED1_2
IO5 TF_CS
IO12 RTP_OUT/TFT_SDO
IO13 RTP_DIN/TFT_SDI
IO14 RTP_CLK/TFT_SCK
IO15 TFT_CS
IO16 LED1_3
IO17 LED1_1
IO18 TF_CLK
IO19 TF_SDO
IO23 TF_SDI
IO25 CTP_RST
IO26 SPK
IO27 BL_CTRL
IO32 CTP_SCL
IO33 RTP_CS/CTP_SDA
IO34 R21(photoresistor)
IO36 RTP_IRQ

Je suipreneur de toute idée qui permettrait de faire fonctionner le touchpad
Merci d'avance
Répondre
Bonjour,
Je viens de tester la nouvelle version V14.20, mais écran blanc... Que faire ?
Répondre
(28-03-2025, 06:13 PM)kymcoman a écrit : Bonjour,
Je viens de tester la nouvelle version V14.20, mais écran blanc... Que faire ?

Bonjour,

Votre écran fonctionnait avec une version précédente?
Si oui avez vous changé quelque chose dans "parametres"?
Répondre
Oui au niveau paramètres tout est OK et l’écran marchait avec la version ST7789
Répondre
(28-03-2025, 07:27 PM)kymcoman a écrit : Oui au niveau paramètres tout est OK et l’écran marchait avec la version ST7789

Avec la 14.20 il faut, de manière similaire à ce que vous aviez fait, modifier le code afin d'utiliser le driver ST7789.
En 14.20 c'est le mode autodetect de LovyanGFX qui est utilisé, à la place il vous faut spécifier le driver comme c’était fait en 14.02 dans le fichier Ecran.h.
Le fichier Ecran.h n'existe plus en 14.20 mais vous pouvez le remettre et l'inclure dans Ecran.ino et ne plus utiliser le mode autodetect.
Répondre
(28-03-2025, 07:51 PM)Mike a écrit :
(28-03-2025, 07:27 PM)kymcoman a écrit : Oui au niveau paramètres tout est OK et l’écran marchait avec la version ST7789

Avec la 14.20 il faut, de manière similaire à ce que vous aviez fait, modifier le code afin d'utiliser le driver ST7789.
En 14.20 c'est le mode autodetect de LovyanGFX qui est utilisé, à la place il vous faut spécifier le driver comme c’était fait en 14.02 dans le fichier Ecran.h.
Le fichier Ecran.h n'existe plus en 14.20 mais vous pouvez le remettre et l'inclure dans Ecran.ino et ne plus utiliser le mode autodetect.

Ok, merci. Mais tu peux me donner les lignes de code exactes à modifier, car je ne suis pas très calé !
Répondre
(28-03-2025, 08:36 PM)kymcoman a écrit : Ok, merci. Mais tu peux me donner les lignes de code exactes à modifier, car je ne suis pas très calé !
Pour utiliser le ST7789 il faut créer un fichier Ecran.h avec le contenu ci dessous et le mettre avec les autres fichiers sources de la 14.20.
Code :
#define LGFX_USE_V1

#include <LovyanGFX.hpp>

#define LCD_MOSI 13
#define LCD_MISO 12
#define LCD_SCK 14
#define LCD_CS 15
#define LCD_RST -1
#define LCD_DC 2
#define LCD_BL 21

#define TOUCH_MOSI 32
#define TOUCH_MISO 39
#define TOUCH_SCK 25
#define TOUCH_CS 33
#define TOUCH_IRQ 36

class LGFX : public lgfx::LGFX_Device {
  lgfx::Panel_ST7789 _panel_instance;
  lgfx::Bus_SPI _bus_instance;
  lgfx::Touch_XPT2046 _touch_instance;
  lgfx::Light_PWM _light_instance;

public:
  LGFX(void) {
    {
      auto cfg = _bus_instance.config();

      // SPI
      cfg.spi_host = HSPI_HOST;
      cfg.spi_mode = 0;
      cfg.freq_write = 40000000;
      cfg.freq_read = 16000000;
      cfg.spi_3wire = true;
      cfg.use_lock = true;
      cfg.dma_channel = 1;
      cfg.pin_sclk = LCD_SCK;
      cfg.pin_mosi = LCD_MOSI;
      cfg.pin_miso = LCD_MISO;
      cfg.pin_dc = LCD_DC;


      _bus_instance.config(cfg);
      _panel_instance.setBus(&_bus_instance);
    }

    {
      auto cfg = _panel_instance.config();

      cfg.pin_cs = LCD_CS;
      cfg.pin_rst = LCD_RST;
      cfg.pin_busy = -1;
      cfg.memory_width = 240;
      cfg.memory_height = 320;
      cfg.panel_width = 240;
      cfg.panel_height = 320;
      cfg.offset_x = 0;
      cfg.offset_y = 0;
      cfg.offset_rotation = 0;
      cfg.dummy_read_pixel = 8;
      cfg.dummy_read_bits = 1;
      cfg.readable = true;
      cfg.invert = false;
      cfg.rgb_order = false;
      cfg.dlen_16bit = false;
      cfg.bus_shared = true;

      _panel_instance.config(cfg);
    }
    {
      auto cfg = _light_instance.config();

      cfg.pin_bl = LCD_BL;
      cfg.invert = false;
      cfg.freq = 44100;
      cfg.pwm_channel = 7;

      _light_instance.config(cfg);
      _panel_instance.setLight(&_light_instance);
    }

    {
      auto cfg = _touch_instance.config();

      cfg.x_min = 0;
      cfg.x_max = 239;
      cfg.y_min = 0;
      cfg.y_max = 319;
      cfg.pin_int = TOUCH_IRQ;
      cfg.bus_shared = true;
      cfg.offset_rotation = 0;


      cfg.spi_host = VSPI_HOST;
      cfg.freq = 1000000;
      cfg.pin_sclk = TOUCH_SCK;
      cfg.pin_mosi = TOUCH_MOSI;
      cfg.pin_miso = TOUCH_MISO;
      cfg.pin_cs = TOUCH_CS;

      _touch_instance.config(cfg);
      _panel_instance.setTouch(&_touch_instance); 
    }

    setPanel(&_panel_instance); 
  }
};

Dans EcranLCD.ino supprimer les 3 lignes suivantes :
Code :
#define LGFX_AUTODETECT  // Autodetect board
#define LGFX_USE_V1
#include <LovyanGFX.hpp>
Et les remplacer par :
Code :
#include "Ecran.h"
Compiler et téléverser sur l'ESP.
Répondre
Super merci Mike
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)