Erreur utilisation de l'ecran 3.5" tft lcd

Bonjour je viens d'acquérir un écran lcd mais je n'arrive pas à l'utiliser. J'ai voulu suivre ce tuto : Utilisation d'un Shield TFT LCD avec Arduino • AranaCorp mais quand je téléverse le code pour calibrer l'écran un message d'erreur s'affiche sur l'écran branché à mon arduino (j'utilise un mega 2560) : Unable to read the position
of the press. This is a
hardware issue and can not
be corrected in software.
check XP, XM pins with a multimeter
check YP, YM pins with a multimeter
should be about 300 ohms

N'ayant pas d'ohmmètre sous la main (oui il faudrait peut être que je m'en achète un un jour) je ne peux pas vérifier si il s'agit bien d'une erreur au niveau de l'hardware (j'ai quand même essayé de téléverser le même code sur 2 arduino uno différent mais le même message d'erreur s'affiche)

J'ai essayé de téléverser d'autres codes de la même librairie comme graphictest_kvb (au passage très fun ce que ça fait) mais là ça marche. Je pense que le problème est du au tactile.

Merci d'avance pour votre aide :slight_smile:

Bonjour,
Quelques infos sur l'écran s'il te plait. La référence ou mieux un lien vers le site du vendeur par exemple

Tu peux aussi essayer la bibliothèque de Paul Stoffregen :

Hello desolé pour ma réponse lente. Je n'ai pas retrouvé le constructeur de mon ecran mais j'ai des photos et le modele : ILI9486

(au cas ou sur les puces U3 etU2 c'est ecrit LVC245A WX11307 TXD916F et sur l'autre en bas pas loin du lecteur sd : AMS1117 3.3 DN811)
j'ai essayé la libraire que tu m'a conseillé @lesept mais sans succes : l'écran reste blanc sur les codes examples XPT2046 : touchtestIQR et touchtest sur le ILI9341Test il me manque la bibliothèque <font_Arial.h> que je ne trouve pas. Et sur les autres ILI9341 je n'arrive pas a les téleverser et ca me donne ce code d'erreur :

Arduino : 1.8.16 (Windows 10), Carte : "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3\examples\graphicstest\graphicstest.ino:18:0:

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::waitFifoNotFull()':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:178:9: error: 'KINETISK_SPI0' was not declared in this scope

    sr = KINETISK_SPI0.SR;

         ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::waitFifoEmpty()':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:187:9: error: 'KINETISK_SPI0' was not declared in this scope

    sr = KINETISK_SPI0.SR;

         ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::waitTransmitComplete()':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:193:12: error: 'KINETISK_SPI0' was not declared in this scope

   while (!(KINETISK_SPI0.SR & SPI_SR_TCF)) ; // wait until final output done

            ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:193:31: error: 'SPI_SR_TCF' was not declared in this scope

   while (!(KINETISK_SPI0.SR & SPI_SR_TCF)) ; // wait until final output done

                               ^~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:194:9: error: 'KINETISK_SPI0' was not declared in this scope

   tmp = KINETISK_SPI0.POPR;                  // drain the final RX FIFO word

         ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::writecommand_cont(uint8_t)':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:197:3: error: 'KINETISK_SPI0' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;

   ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:197:51: error: 'SPI_PUSHR_CTAS' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;

                                                   ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:197:71: error: 'SPI_PUSHR_CONT' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;

                                                                       ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::writedata8_cont(uint8_t)':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:201:3: error: 'KINETISK_SPI0' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;

   ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:201:48: error: 'SPI_PUSHR_CTAS' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;

                                                ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:201:68: error: 'SPI_PUSHR_CONT' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0) | SPI_PUSHR_CONT;

                                                                    ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::writedata16_cont(uint16_t)':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:205:3: error: 'KINETISK_SPI0' was not declared in this scope

   KINETISK_SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT;

   ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:205:48: error: 'SPI_PUSHR_CTAS' was not declared in this scope

   KINETISK_SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT;

                                                ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:205:68: error: 'SPI_PUSHR_CONT' was not declared in this scope

   KINETISK_SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1) | SPI_PUSHR_CONT;

                                                                    ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::writecommand_last(uint8_t)':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:210:3: error: 'KINETISK_SPI0' was not declared in this scope

   KINETISK_SPI0.SR = SPI_SR_TCF;

   ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:210:22: error: 'SPI_SR_TCF' was not declared in this scope

   KINETISK_SPI0.SR = SPI_SR_TCF;

                      ^~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:211:51: error: 'SPI_PUSHR_CTAS' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_command << 16) | SPI_PUSHR_CTAS(0);

                                                   ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::writedata8_last(uint8_t)':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:216:3: error: 'KINETISK_SPI0' was not declared in this scope

   KINETISK_SPI0.SR = SPI_SR_TCF;

   ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:216:22: error: 'SPI_SR_TCF' was not declared in this scope

   KINETISK_SPI0.SR = SPI_SR_TCF;

                      ^~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:217:48: error: 'SPI_PUSHR_CTAS' was not declared in this scope

   KINETISK_SPI0.PUSHR = c | (pcs_data << 16) | SPI_PUSHR_CTAS(0);

                                                ^~~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h: In member function 'void ILI9341_t3::writedata16_last(uint16_t)':

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:222:3: error: 'KINETISK_SPI0' was not declared in this scope

   KINETISK_SPI0.SR = SPI_SR_TCF;

   ^~~~~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:222:22: error: 'SPI_SR_TCF' was not declared in this scope

   KINETISK_SPI0.SR = SPI_SR_TCF;

                      ^~~~~~~~~~

C:\Users\yannc\Documents\Arduino\libraries\ILI9341_t3/ILI9341_t3.h:223:48: error: 'SPI_PUSHR_CTAS' was not declared in this scope

   KINETISK_SPI0.PUSHR = d | (pcs_data << 16) | SPI_PUSHR_CTAS(1);

                                                ^~~~~~~~~~~~~~

exit status 1

Erreur de compilation pour la carte Arduino Mega or Mega 2560



Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

ILI9484 n'est pas le modèle de l'écran, c'est le nom du driver. Ce driver peut équiper plusieurs écrans avec un transfert de donnée soit en parallèle 8bits (comme le tient), soit en parallèle 16 bits, soit en mode série. Il y a aussi d'autres modes dont je n'ai pas vu de réalisation.

Les noms des autres puces n'ont pas d'importance.

Le ILI9341 est un autre driver pour des écrans 320*240, et si on change de driver, les registres ne sont plus au bon endroit, et piloter un ILI9486 ne peut pas se faire comme un ILI9341. C'est un peu comme si tu dialogue avec un étranger dont tu ne connais pas la langue.
Dans la recherche d'un pilote, il faut vérifier qu'il y ait le mot ILI9486. Tout autre mot débutant par ILI, ST, HX... indique une compatibilité avec un autre driver, mais dans ton cas cela n'a pas d'intérêt.

Je ne peux pas t'aider plus car si j'ai bien un écran 480*320, je jour ou je vais l'utiliser, j'écrirais ma propre bibliothèque.

Voir ici, peut-être la solution