Création des objets UTFT et URTouch pour un écran tactile

Bonjour à tous !

Je suis en train de réaliser un petit projet à base d'écran tactile et je souhaite utiliser les librairies UTFT et URTouch pour cela. Mon problème viens lors de la création des objets UTFT et URTouch, au tout début du programme, et plus particulièrement pour trouver les paramètres à y mettre.

D'après les documentations des librairies, la déclaration se fait avec un code de cette forme :

UTFT    myGLCD(Modèle, Pin Register Select, Pin Write, Pin Chipe Select, Pin Reset)
URTouch  myTouch( Pin Touch Clock, Pin Touch Chip Select, Pin Touch Data Input, Pin Touch Data Output, Pin Touch IRQ);

Mon écran + shield est celui ci : Ecran + Shield

Ainsi, en fouillant dans la documentation de la librairie UTFT (que j'ai mis en pièce jointe), j'ai trouvé que pour le contrôleur "ILI9481" (que j'ai trouvé sur la page produit amazon), le modèle à mettre était "ILI9481" (j'ai trouvé ça sur la dernière page de la documentation).
En regardant la façon dont est fait le shield et comment il était branché à mon Arduino Mega, j'ai aussi trouvé (je pense), tous les pin pour la déclaration UTFT, ce qui me donne :

UTFT    myGLCD(ILI9481,A2,A1,A4,A5);

En ce qui concerne le URTouch, je n'ai aucune idée des pins, d'où mon problème. De plus, je ne suis absolument pas sûr de mon code pour la création de l'objet UTFT.

Ainsi, si quelqu'un est habitué à utiliser ces librairies ou les écrans de manière générale, votre aide saura être appréciée :slight_smile: Dans tous les cas, merci d'avoir pris le temps de lire.

Bonne journée !

URTouch_Supported_display_modules.pdf (62.2 KB)

Salut

Il va de toutes façons commencer par calibrer ta dalle tactile.
Utilise l'exemple URTouch_calibration.ino
Dans ce code tu as un beau commentaire :

// Standard Arduino Uno/2009 Shield            : 15,10,14, 9, 8
// Standard Arduino Mega/Due shield            :  6, 5, 4, 3, 2
// CTE TFT LCD/SD Shield for Arduino Due       :  6, 5, 4, 3, 2
// Teensy 3.x TFT Test Board                   : 26,31,27,28,29
// ElecHouse TFT LCD/SD Shield for Arduino Due : 25,26,27,29,30
//
URTouch  myTouch( 6, 5, 4, 3, 2);

Choisis 15,10,14, 9, 8 pour une UNO.

@+

Bonjour,

Déjà merci beaucoup pour ton aide ! Et ensuite, effectivement je n'avais pas fait attention à cet exemple, j'aurais dû. Cependant, même en utilisant la bonne combinaison ( 6, 5, 4, 3, 2 en théorie, car le shield est pour arduino mega normalement), l'écran reste blanc alors que la suite du code (code emprunté pour le test) n'est pas censé faire ça. J'en conclu donc que le problème viens de la création de l'objet UTFT, mais je ne vois pas quoi changer. Une idée ?

PS : J'essaie avec des exemples de la librairies UTFT, et d'après les commentaires encore une fois, la suite de chiffres est : 38,39,40,41, me manque plus que le "Model", la première info

Merci encore !

Il faudrait être sûr que le contrôleur l'écran est bien un ILI9481.
Sur le site amzon ils parlent de :

contrôleur: ILI9481 or ILI9488 driver (default in ramdon)

Ensuite as-tu remplacé l'identifiant du driver dans l'instanciation de UTFT :

UTFT    myGLCD(ILI9481, 38, 39, 40, 41);

// alors que tu suggère dans ton post #1
UTFT    myGLCD(ILI9481, A2, A1, A4, A5);

Les pins de l'écran sont imposées par le shield. Tu n'as pas le choix.

@+

Oui effectivement, j'ai bien testé avec les deux combinaisons, mais effectivement, la deuxième était un peu stupide à utiliser. Je suis parti du principe que c'était le premier et pas le ILI9488 car de toutes façons, d'après la documentation de la librairie UTFT, le second n'est pas (ou je ne trouve pas) dans la liste, donc je ne peux pas écrire de modèle.

Etant donné que les possibilités avec le ILI9481 ne fonctionnent pas, je vais donc essayer de voir si je peux "ajouter" le ILI9488 à la librairie, avec un peu de chance je trouverai :slight_smile:

Tu es sûr que c'est un ILI9488 ?

Tu as essayé ça :

UTFT    myGLCD(ILI9481, 38, 39, 40, 41);

@+

Absolument pas sûr, mais je ne sais pas comment vérifier ça, et l'autre ne fonctionnant pas j'en "déduit" que c'est ça.
Oui j'ai essayé cela.
Je commence à paniquer et j'ai peur de ne pas trouver de solution là :stuck_out_tongue:
En tout cas merci pour l'aide !

Sinon, il existe des librairies spécialisées ILI9488 sur le net.
Cela permettra de confirmer.

@+

De même la bibliothèque TFT_eSPI fonctionne avec l'ILI9488
Elle met aussi en œuvre le touch.

Alors j'ai essayé les deux librairies, et toujours le même problème, écran blanc. Du coup je me suis renseigné sur un problème plus général d'écran blanc et j'ai trouvé un Tuto et je l'ai donc suivi (extrait du code :slight_smile:

/* if(identifier == 0x9325) {
    Serial.println(F("Found ILI9325 LCD driver"));
  } else if(identifier == 0x9328) {
    Serial.println(F("Found ILI9328 LCD driver"));
  } else if(identifier == 0x7575) {
    Serial.println(F("Found HX8347G LCD driver"));
  } else if(identifier == 0x9341) {
    Serial.println(F("Found ILI9341 LCD driver"));
  } else if(identifier == 0x8357) {
    Serial.println(F("Found HX8357D LCD driver"));
  } else {
    Serial.print(F("Unknown LCD driver chip: "));
    Serial.println(identifier, HEX);
    Serial.println(F("If using the Adafruit 2.8\" TFT Arduino shield, the line:"));
    Serial.println(F("  #define USE_ADAFRUIT_SHIELD_PINOUT"));
    Serial.println(F("should appear in the library header (Adafruit_TFT.h)."));
    Serial.println(F("If using the breakout board, it should NOT be #defined!"));
    Serial.println(F("Also if using the breakout, double-check that all wiring"));
    Serial.println(F("matches the tutorial."));
    return;
  } */

  tft.begin(0x9341);

  Serial.println(F("Benchmark                Time (microseconds)"));

Cependant, le tutoriel s'arrête là, donc je ne sais pas quoi faire de "l'identifier" que j'ai trouvé (0x9341). J'ai essayé de faire avec le contrôleur ILI9341 d'après ce que j'avais lu ici :

else if(identifier == 0x9341) {
    Serial.println(F("Found ILI9341 LCD driver"));

, mais du il y a plusieurs possibilité pour le model à mettre, par exemple : UTFT myGLCD(ILI9341_16,38,39,40,41);, mais quand je transfère le code je récupère un écran blanc, comme d'habitude, et ceci pour toutes les possibilités affichés sur le pdf des compatibilités..

Si tu utilises TFT_eSPI, maintenant que tu sais que le driver est un ILI9341, il faut choisir ce driver dans un fichier de configuration appelé user_setup je crois. Ce fichier contient plein de configurations différentes et tu choisis celle qui correspond à ton driver. Les broches de connexion sont indiquées dans les lignes qui correspondent à ton driver mais tu peux les changer si tu veux (je ne te le conseille pas pour un début).
Tout est expliqué sur le github de la bibliothèque que je t'ai indiqué plus haut.

Merci !
Du coup je vais essayer ça. Mais si j'utilise cette librairie, je ne pourrais pas utiliser la UTFT si ? Ou alors les deux ont les même commandes ? Car je voudrais me servir des fonctions "fillRoundRect", "drawRoundRect" qui permettent de faire des "boutons" rectangles et des toutes les fonctions qui permettent de gérer des pages ("drawHomeScreen()", etc.).

Je ne suis pas sûr que tu y trouveras toutes les fonctions dont tu as besoin. Tu trouveras la liste des fonctions et leurs arguments dans le fichier TFT_eSPI.h

Effectivement parfait ! En ce qui concerne les pages, je pense pouvoir les gérer de toutes manières. J'ai cependant un tout dernier problèmes, j'ai fait les réglages (le ILI9341 était de toute façon par défaut donc je n'ai rien eu à changer), mais quand j'essaye de transférer l'un des programmes exemples sur la carte, j'ai cette erreur :

Arduino : 1.8.7 (Windows 10), Carte : "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from D:\Programmes_HDD\Arduino_fix\Arduino\libraries\TFT_eSPI-master/TFT_eSPI.h:60:0,

                 from C:\Users\AppData\Local\Temp\arduino_modified_sketch_358641\Test_Touch_Controller.ino:18:

D:\Programmes_HDD\Arduino_fix\Arduino\libraries\TFT_eSPI-master/Fonts/glcdfont.c:6:22: fatal error: pgmspace.h: No such file or directory

compilation terminated.

exit status 1
Erreur de compilation pour la carte Arduino/Genuino 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.

J'ai vu que sur une autre librairie, des personnes avaient modifiées le fichier .cpp en changeant

#include <pgmspace.h>

par

#if (defined(__AVR__))
  #include <avr\pgmspace.h>
#else
  #include <pgmspace.h>
#endif

mais cette solution ne fonctionne pas pour moi

Du coup je ne sais encore une fois plus quoi faire x) même si je sens que j'approche du but !

Essaye avec uniquement

 #include <avr\pgmspace.h>

Car je voudrais me servir des fonctions "fillRoundRect", "drawRoundRect" qui permettent de faire des "boutons" rectangles

Les deux librairies proposent ce genre de méthode. Les arguments diffèrent, c'est tout.

@+

lesept:
Essaye avec uniquement

 #include <avr\pgmspace.h>

Toujours la même erreur..

hbachetti:
Les deux librairies proposent ce genre de méthode. Les arguments diffèrent, c'est tout.

@+

Effectivement, si j'arrive à compiler ce fichier ça devrait être parfait ! :slight_smile:

Est ce que tu peux transférer et faire fonctionner correctement un des exemples de la bibliothèque pour ton écran ?

Non justement, ce sont les exemples que je lance quand j'ai cette erreur.

Tu es sur d'avoir correctement installé la bibliothèque ?