TFT 7.0" + shield + mega 2560 + mcufriend.com

Bonjour, j'ai eu la chance de récupérer du matos gratis :slight_smile:
Le problème c'est que je n'ai aucune expérience dans le fait de connecter un écran sur un arduino via un shield.

J'ai réussi à retrouver le vendeur qui m'a donné ces liens :

http://speedy.sh/PbKZD/4.3-7-3-1-2-3.rar

http://speedy.sh/HFTPA/7-4.3-2.rar
http://speedy.sh/GzXhM/7-4.3mega-1.rar

J'ai ajouté toutes ces librairies plus celle de henningkarlsen.

J'ai essayé plusieurs paramètres a la déclaration myGLCD, CTE70, SSD1963... Mais rien a faire, il reste un ecran blanc ou noir (mais pas éteint).

Je cherche un peu partout sur le net depuis une semaine, mais aujourd'hui mon cerveau commence par couler par mes oreilles. Alors je viens vers vous.
J'espère que vous pourrez m'aider.

Merci

J'ai aussi des photos du matos.

https://carousel.dropbox.com/photos/cc/iwZr1kAm09YCDmW

au regar de l'ecran que tu a fourni en piece jointe je dirai qu'il est equipé d'un prosse "SSD1963 solomon"
peut tu confirmé ?

le conecteur semble bien etre un conecteur 40 PIN et a mon avis il fonctione en 3V3 .
seul truc qui me géne en regardant tes photo c'est la mention 4.3" sur le shield!

bon je commence avoir quelque retour avec les ecrants 5", le tien etant du 7" a mon avis tu peut avoir le meme type de probléme !

1- si tu ne l'a pas deja fait alimente ton arduino par autre chose que l'usb car en général il sont carrement devoreure d'energie !

2- un ecrant blanc peut venir aussi d'une mauvaise init des pin donc qua tu mi comme code de lib UTFT?

dans la lib UTFT le seul 7" que je vois dans le PDF c'est TFT01_70 et tu as de la chance il fonctione avec un SSD1903 donc tu peut essayer de l'initialisé avec

UTFT Tft(TFT01_70,38,39,40,41);

UTouch touch(6,5,4,3,2);// shield CPLD

Merci de t'intéresser à mon cas.

Heloderma-kris:
au regar de l'ecran que tu a fourni en piece jointe je dirai qu'il est equipé d'un prosse "SSD1963 solomon"
peut tu confirmé ?

SSD1963 oui, solomon je ne sais pas, je n'ai jamais entendus parler de ça. Sur la puce de l'écran il est écrit "SSD1963QL9 AU409AF".

seul truc qui me géne en regardant tes photo c'est la mention 4.3" sur le shield!

C'est vrai, cela dit le shield vient du même fabricant et le shield était vendu en pack avec l'écran par le vendeur.

1- si tu ne l'a pas deja fait alimente ton arduino par autre chose que l'usb car en général il sont carrement devoreure d'energie !

Oui, c'est fait, j'ai une alim externe largement suffisante.

2- un ecrant blanc peut venir aussi d'une mauvaise init des pin donc qua tu mi comme code de lib UTFT?

Effectivement je pense que le problème se trouve dans la déclaration myGLCD.

Je suis allez dans "Fichier" > "Exemples" > "UTFT" > "Arduino AVR" > "UTFT_Demo_800x480

Et en déclaration j'ai mis UTFT myGLCD(TFT01_70,38,39,40,41); en remplaçant TFT01_70 par tout les autres modeles ssd1963 de cette librairie et de la librairie henningkarlsen.

C'est vraiment très rageant d'être bloqué dès ici :confused:

peut tu poster ton code au moins ton setup et tes declarations pour que j'y regarde .
autre chose tu branche ton ecran direct sur le shield ou tu utiise une nappe pour le deporté ?
es tu sur qu'il soit bien connecté?

Voici le code par défaut.
J'ai bien sûr essayer de remplacer "ITDB50" par tout ceux qui utilisent le ssd1963.

Avec ce code, au démarrage j'ai un écran blanc pendant 3 ou 4 secondes. Puis un écran noir (mais pas éteint).

// UTFT_Demo_800x480 (C)2014 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// This program is a demo of how to use most of the functions
// of the library with a supported display modules.
//
// This demo was made for modules with a screen resolution 
// of 800x480 pixels.
//
// This program requires the UTFT library.
//

#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];

// Set the pins to the correct ones for your development shield
// ------------------------------------------------------------
// Arduino Uno / 2009:
// -------------------
// Standard Arduino Uno/2009 shield            : <display model>,A5,A4,A3,A2
// DisplayModule Arduino Uno TFT shield        : <display model>,A5,A4,A3,A2
//
// Arduino Mega:
// -------------------
// Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Mega      : <display model>,38,39,40,41
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(ITDB50,38,39,40,41);

void setup()
{
  randomSeed(analogRead(0));
  
// Setup the LCD
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
}

void loop()
{
  int buf[798];
  int x, x2;
  int y, y2;
  int r;

// Clear the screen and draw the frame
  myGLCD.clrScr();

  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRect(0, 0, 799, 13);
  myGLCD.setColor(64, 64, 64);
  myGLCD.fillRect(0, 466, 799, 479);
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1);
  myGLCD.setBackColor(64, 64, 64);
  myGLCD.setColor(255,255,0);
  myGLCD.print("<http://electronics.henningkarlsen.com>", CENTER, 467);

  myGLCD.setColor(0, 0, 255);
  myGLCD.drawRect(0, 14, 799, 465);

// Draw crosshairs
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(399, 15, 399, 464);
  myGLCD.drawLine(1, 239, 798, 239);
  for (int i=9; i<790; i+=10)
    myGLCD.drawLine(i, 237, i, 242);
  for (int i=19; i<470; i+=10)
    myGLCD.drawLine(397, i, 402, i);

// Draw sin-, cos- and tan-lines  
  myGLCD.setColor(0,255,255);
  myGLCD.print("Sin", 5, 15);
  for (int i=1; i<798; i++)
  {
    myGLCD.drawPixel(i,239+(sin(((i*1.13)*3.14)/180)*200));
  }
  
  myGLCD.setColor(255,0,0);
  myGLCD.print("Cos", 5, 27);
  for (int i=1; i<798; i++)
  {
    myGLCD.drawPixel(i,239+(cos(((i*1.13)*3.14)/180)*200));
  }

  myGLCD.setColor(255,255,0);
  myGLCD.print("Tan", 5, 39);
  for (int i=1; i<798; i++)
  {
    myGLCD.drawPixel(i,239+(tan(((i*0.9)*3.14)/180)));
  }

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(399, 15, 399, 464);
  myGLCD.drawLine(1, 239, 798, 239);

// Draw a moving sinewave
  x=1;
  for (int i=1; i<(798*20); i++) 
  {
    x++;
    if (x==799)
      x=1;
    if (i>799)
    {
      if ((x==399)||(buf[x-1]==239))
        myGLCD.setColor(0,0,255);
      else
        myGLCD.setColor(0,0,0);
      myGLCD.drawPixel(x,buf[x-1]);
    }
    myGLCD.setColor(0,255,255);
    y=239+(sin(((i*1.65)*3.14)/180)*(200-(i / 100)));
    myGLCD.drawPixel(x,y);
    buf[x-1]=y;
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

// Draw some random filled rectangles
  for (int i=0; i<50; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(746);
    y=16+random(397);
    x2=x+50;
    y2=y+50;
    myGLCD.fillRect(x, y, x2, y2);
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

// Draw some random filled, rounded rectangles
  for (int i=0; i<50; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(746);
    y=16+random(397);
    x2=x+50;
    y2=y+50;
    myGLCD.fillRoundRect(x, y, x2, y2);
  }
  
  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

// Draw some random filled circles
  for (int i=0; i<50; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=27+random(746);
    y=41+random(397);
    myGLCD.fillCircle(x, y, 25);
  }
  
  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

// Draw some lines in a pattern
  myGLCD.setColor (255,0,0);
  for (int i=15; i<463; i+=5)
  {
    myGLCD.drawLine(1, i, (i*1.66)-10, 463);
  }
  myGLCD.setColor (255,0,0);
  for (int i=463; i>15; i-=5)
  {
    myGLCD.drawLine(798, i, (i*1.66)+30, 15);
  }
  myGLCD.setColor (0,255,255);
  for (int i=463; i>15; i-=5)
  {
    myGLCD.drawLine(1, i, 770-(i*1.66), 15);
  }
  myGLCD.setColor (0,255,255);
  for (int i=15; i<463; i+=5)
  {
    myGLCD.drawLine(798, i, 810-(i*1.66), 463);
  }
  
  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

// Draw some random circles
  for (int i=0; i<250; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=32+random(736);
    y=45+random(386);
    r=random(30);
    myGLCD.drawCircle(x, y, r);
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

// Draw some random rectangles
  for (int i=0; i<250; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(796);
    y=16+random(447);
    x2=2+random(796);
    y2=16+random(447);
    myGLCD.drawRect(x, y, x2, y2);
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

// Draw some random rounded rectangles
  for (int i=0; i<250; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(796);
    y=16+random(447);
    x2=2+random(796);
    y2=16+random(447);
    myGLCD.drawRoundRect(x, y, x2, y2);
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

  for (int i=0; i<250; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    x=2+random(796);
    y=16+random(447);
    x2=2+random(796);
    y2=16+random(447);
    myGLCD.drawLine(x, y, x2, y2);
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,798,464);

  for (int i=0; i<10000; i++)
  {
    myGLCD.setColor(random(255), random(255), random(255));
    myGLCD.drawPixel(2+random(796), 16+random(447));
  }

  delay(2000);

  myGLCD.fillScr(0, 0, 255);
  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRoundRect(320, 190, 479, 289);
  
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.print("That's it!", CENTER, 213);
  myGLCD.print("Restarting in a", CENTER, 239);
  myGLCD.print("few seconds...", CENTER, 252);
  
  myGLCD.setColor(0, 255, 0);
  myGLCD.setBackColor(0, 0, 255);
  myGLCD.print("Runtime: (msecs)", CENTER, 450);
  myGLCD.printNumI(millis(), CENTER, 465);
  
  delay (10000);
}

voilà. Je branche l'écran directement sur le shield. Je sais que je l'ai branché dans le bon sens en repérant le chemin des bornes d'alimentations 3V.

bon j'ai telechargé les lien que tu avais mi plus haut est cela n'aporte rien ce sont des copie de la lib UTFT.h donc tu peut les virées

esaye d'intercalé les retour sur le serial pour voir ou ça plante

ex : un code a tester qui devrai faire un ecrant noir est un rectangle blanc avec retour des etape sur Serial en 9600 baud:

#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];

// Set the pins to the correct ones for your development shield
// ------------------------------------------------------------
// Arduino Uno / 2009:
// -------------------
// Standard Arduino Uno/2009 shield            : <display model>,A5,A4,A3,A2
// DisplayModule Arduino Uno TFT shield        : <display model>,A5,A4,A3,A2
//
// Arduino Mega:
// -------------------
// Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
// CTE TFT LCD/SD Shield for Arduino Mega      : <display model>,38,39,40,41
//
// Remember to change the model parameter to suit your display module!
UTFT myGLCD(TFT01_70,38,39,40,41);

void setup()
{
  
  Serial.begin(9600);
// Setup the LCD
  myGLCD.InitLCD();
  Serial.println(F("init lcd"));
  myGLCD.clrScr();
  Serial.println(F("efface lcd"));
  Serial.print(F("size X: "));
  Serial.println(myGLCD.getDisplayXSize());
  Serial.print(F("Size Y: "));
  Serial.println(myGLCD.getDisplayYSize());
  
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.fillRect(0,0,myGLCD.getDisplayXSize(),myGLCD.getDisplayYSize());
  Serial.println(F("trace l ecran noir "));
  myGLCD.setColor(255, 255, 255);
  myGLCD.drawRect((myGLCD.getDisplayXSize())/4, (myGLCD.getDisplayYSize())/4, 3*(myGLCD.getDisplayXSize())/4, 3*(myGLCD.getDisplayYSize())/4);
  Serial.println(F("trace rectangle blanc "));
delay(5000);
}

void loop()
{
}

Ok, donc j'ai supprimé la bibliothèque parfumée au nem et j'ai mis celle de karlsen.

J'ai mis ton morceau de code, et le com me renvoit ça :

init lcd
efface lcd
size X: 800
Size Y: 480
trace l ecran noir
trace rectangle blanc

Et le tft m'envoi un écran blanc 1 seconde et ensuite l'écran noir.

EDIT : j'ai essayé de mettre le code qui dessin les rectangles dans le loop. Et le com me renvoi trace l ecran noir
trace rectangle blanc

toutes les 5 secondes (normal) mais sans le moindre changement sur l'écran.

EDIT2 : j'ai essayé de remplacer CT01_70 par ssd1963_800 ou SSD1963_800ALT mais ça ne change rien.

bon il reste plus qu'un truc a regarder si les pin du connecteur 40point sont bien au meme endroi que ce que nececcite la lib UTFT , pour ça tu ouvre le dossier UTFT il y a un pdf requierment.pdf et tu compare au inscription qu'il y a sur ton ecrant .

car la c'est pas un probléme de code apriori mais bien de config .

quand j'agrandi la photo que tu fourni de l'ecrant il me semble y avoir des diference ! apres faudra faire la meme avec ton shield pour etre sur ( 4.3" m'inquiette tjs)

je te joint une photo de 2 conecteur sur un ecrant TB50 CTE50 j'ai que des 5" . je n'ai pas réhusi a trouvé un code de demo pour ton ecrant sur le site chinoi.

connecteur-ecran.jpg

Merci pour ton aide.

Ce que je vais faire, c'est utiliser ça que j'ai trouvé sur la doc constructeur, et me passer du shield pour connecter l'écran directement sur la mega.

Je fais ça se soir et je vous tiens au courant.

Quelque chose m'interpelle, quand je vais dans le dossier C:\Users\moi\Documents\Arduino\libraries\UTFT\hardware\avr

c'est à dire là ou je dois modifier les pins, hé bien il n'ya pas de fichier pour le mega 2560, Ceci expliquerait cela non ?

C'est en examinant cette page que je me suis posé la question.

je ne suis pas sur de ce que je vais dire , mais pour moi entre les ATM MEGA 2560 ou les ATM MEGA 1280 l'implantation des pin est la meme ! seul la memoir flash est differente . dou le fait que pandant la compilation un 2560 ou 1280 soit equivalent .