Expérience et conseils pour un écran LCD TFT 3,2" tactile

Bonjour,

J'ai acheté sur eBay il y a quelques temps un écran tactile LCD TFT 3,2" avec un contrôleur SSD1289 (interface 16 bits) pour le LCD et un ADS7843 pour la dalle tactile. L'un des nombreux modèles, tous différents mais tous semblables que l'on trouve pour 10-12€. Il n'y a pas de marque dessus.

Il est destiné à équiper un boîtier de commande sans fil. La carte micro serait une Teensy 3.1.

Pour l'instant, comme je n'ai pas reçu le connecteur CMS pour la Teensy, je bricole avec un Due

J'ai par ailleurs installé UTFT et UTouch. Je n'ai pas eu de problème majeur pour mettre en route la partie graphique en suivant les infos données par l'auteur de UTFT. Le fait que l'écran n'ai pas le pinout imprimé sur le connecteur n'aide pas mais il semble standard.

Toutefois, en faisant des essais de dessin de cercles remplis par une couleur j'ai constaté une anomalie : lors du tracé d'un vecteur via les primitives SetXY et _fast_fill_16, lorsque la coordonnée x2 est comprise entre 64 et 93 ou entre 192 et 223, le point sur l'écran est décrémenté de 32 :confused:

Voici ce que ça donne, on voit les deux bandes verticales où le problème apparaît :

  Serial.println("----------------------------------------");
  Serial.println("---------    Vertical lines    ---------");
  Serial.println("----------------------------------------");
  
  // Draw the vertical lines
  for (int x = 0; x < 240; x += 10)
  {
    myGLCD.drawLine(x, 0, x, 319);
  }
  
  delay (5000);

  Serial.println("----------------------------------------");
  Serial.println("--------    Horizontal lines    --------");
  Serial.println("----------------------------------------");
  
  // Draw the horizontal lines
  for (int y = 0; y < 320; y += 10)
  {
    myGLCD.drawLine(0, y, 239, y);
  }

  delay (5000);
   
  Serial.println("----------------------------------------");
  Serial.println("---------    Filled circle    ----------");
  Serial.println("----------------------------------------");
  
  // and a centered filled circle  
  myGLCD.fillCircle(120,160,119);

Un tracé de lignes horizontales :

  for (int x = 0; x < 239; x++) {
    myGLCD.drawLine(0,x,x,x); 
  }

Je ne m'explique pas ce qui se passe car bien que ces valeurs correspondent à des intervalles en puissance de 2, les bits incriminés servent à d'autres commandes qui elles semblent fonctionner. Sinon ça marcherait encore moins bien.

Côté tactile c'est un fiasco. UTouch détecte bien la pression sur l'écran mais les coordonnées brutes retournées par l'ADC de l'ADS7843 sont systématiquement 4095 (conversion 12 bits) donc des 1 partout comme si la ligne DOUT était collée.

Bref, après 3 jours d'investigation j'ai l'impression que mon écran est un peu moisi.

L'un d'entre vous aurait il une expérience de ce genre d'écran et un modèle particulier à me conseiller (avec un budget raisonnable étant donné que je veux réaliser une petite dizaine d'appareils)

Merci !

Bien cordialement

Un bit du bus collé à zéro ou deux bits permutés sur le bus?