Shield tft, display tft 3.2 e arduino uno

Buongiorno a tutti,
Premetto che sono abbastanza alle prime armi, ed avrei bisogno di qualche dritta!
Ho acquistato un display TFT da 3,2 SSD1289 , uno shield per display per arduino uno e ho un arduino uno.
Ho provato con le varie librerie e modificando il modello display sullo skretch a farlo funzionare ma non ci sono riuscito unico risultato schermo bianco!
Dopo varie indagini ho visto che il mio errore credo sia stato nel prendere lo shield per arduino uno che come scritto pilota display fino a 2.4 mi sembra .
Ora la mia domanda è questa non mi funziona per questo motivo? Cioè perché quello shield non concepito per pilotare quel display?
Dopo ulteriori indagini mo sembra di aver capito che comunque collegandolo direttamente ad arduino uno senza shield dovrebbe funzionare, oppure che facendo le dovute modifiche allo skretch per quanto riguarda i Pin dovrebbe anche funzionare, sono sulla buona strada ?
Grazie mille
P.S. scusate il papiro :smiley:

... metti SEMPRE i link ai prodotti di cui parli perché ce ne sono talmente tanti che capire quale è ESATTAMENTE il modello in discussione è sempre difficile.

Guglielmo

Ops scusate :stuck_out_tongue:
Allora il display è questo

Mentre lo shield è questo
http://www.ebay.it/itm/331092773682

Scusate ancora!

nel frattempo ho continuato a fare altre prove ma a quanto sembra non vuole proprio saperne di funzionare,
adesso ho deciso di provare a collegarlo direttamente ad arduino senza shield.

... comunque il venditore lo da per Arduino MEGA ... tu se che Arduino lo stai usando ?

Guglielmo

Nella descrizione del display c'è scritto che con l apposito adattatore può essere pilotato sia dal MEGA che dall UNO.
Comunque io sto utilizzando un Arduino Uno!

...... ho deciso di provare a collegarlo direttamente ad arduino senza shield.

ok, però quel LCD funziona a 16 bit, quindi compreso i segnali di controllo servono 20 pin solo per visualizzare qualcosa. E comunque sia la SD che il Touch sono esclusi
Quindi che te ne fai di un LCD se ti occupa TUTTI i pin a disposizione ?

PS. Nelle Shield Adapter ci sono dei Logic Level Converter, perche' l'LCD funziona a 3.3V, mica sarei tanto sicuro che gli ingressi siano 5V tollerant

Inoltre, il venditore dello shield scrive esattamente:
"Questa scheda converte i segnali a 5V provenienti dall'arduino UNO in segnali a 3,3V necessari
per pilotare i display TFT a colori da 2,4" presenti nel nostro negozio"

Il display è stato comprato da altro venditore. Quindi ti chiedo, chi ti dice che lo shield sia compatibile ?

vale88:
Nella descrizione del display c'è scritto che con l apposito adattatore può essere pilotato sia dal MEGA che dall UNO.
Comunque io sto utilizzando un Arduino Uno!

... che, come ti ha detto Brunello, diventa inutilizzabile per qualsiasi altra cosa e che comunque ... NON ha SRAM sufficiente per fare qualsiasi cosa che sia più che una banale demo !

Consiglio spassionato, o passi alla MEGA, o cambi display e te ne prendi uno di quelli "intelligenti" con a bordo la sua MCU, la memoria e con collegamento seriale che usa solo due pin :slight_smile:

Guglielmo

gpb01:
... comunque il venditore lo da per Arduino MEGA ... tu se che Arduino lo stai usando ?

Veramente l'adattatore linkato lo vedo descritto come "Adattatore di segnali TFT01 per display TFT grafico disegnato per ARDUINO UNO."...
Tra l'altro quel venditore è anche uno dei miei spacciatori di componenti e shield quindi mi fido...:wink:

vale88:
adesso ho deciso di provare a collegarlo direttamente ad arduino senza shield.

Ma scherzi? Non lo fare! Il display va controllato con 3.3V non 5V, a questo serve quello shield!!!

docdoc:
Veramente l'adattatore linkato lo vedo descritto come "Adattatore di segnali TFT01 per display TFT grafico disegnato per ARDUINO UNO."...

... hai perfettamente ragione ... mea culpa ... mi si sono mischiati i link di questa discussione con quelli di un'altra con un altro display e libreria che avevo già aperti nel browser ... chiedo scusa :-[

Guglielmo

Ahahaha ok ok ragazzi ora rispondo a tutti !!
Allora lo shield pensavo fosse compatibile ma evidentemente non lo è ! Ripeto sono alle prime armi!
Ho controllato anche lo schema dello shield ritrovando i Pin e corrispondono a quelli sull display per quanto riguarda CS RESET, ecc,ecc!
Ma non ne vuole sapere di funzionare , per quello che fa lo shield chè mi controlla la tensione a 3,3 volt che è la tensione della display lo sapevo però non so cosa altro serva sinceramente ! Per la SRAM e l occupazione dei Pin so che li prende tutti la mia per il momento è per apprendere a lavorare e saperli far lavorare sia dal punto di vista HW che SW,
Per docdoc si si grazie lo so che nn devo collegarlo ai 5 V c'è un uscita 3,3 V sull arduino userei quella!
Comunque ho raccimolato un po di documenti anche per il display per il collegamento diretto all UNO appena posso li carico potrebbero essere utili!
Comunque ecco sto facendo pratica poi ovviamente quando passerò a progetti passerò a un mega se necessario e ad un display serio tipo nextion che pare vadano bene!

vale88:
Per docdoc si si grazie lo so che nn devo collegarlo ai 5 V c'è un uscita 3,3 V sull arduino userei quella!

Uhm non credo vada comunque bene, primo perché se il display (che non ho e non ho visto il datasheet) va ALIMENTATO a 3.3V l'uscita di Arduino non è in grado di erogare sufficiente corrente. Secondo, perché anche i pin di controllo credo non siano a 5V TTL ma a 3.3V anche quelli, e mandargli in ingresso 5V non gli farà bene.

In ogni caso come ti hanno già sottolineato, sarebbe meglio acquistare queste cose che vanno "in coppia" dallo STESSO venditore. Non solo perché probabilmente sono fatti uno per l'altro, ma anche perché se poi non ti funziona qualcosa, ogni venditore potrebbe dare la colpa al materiale che hai preso dall'altro e tu ti troveresti in mezzo, con due pezzi di vetronite e chip inutili.

Per cui ti direi che devi leggerti meglio il datasheet del display per capire cosa richiede, per lo shield confido che sia quello che dice di essere ossia un "adattatore" per andare da 5 a 3.3V, nulla più, non è un circuito complicato e secondo me DEVE funzionare.

Per altre info ti consiglio di vedere questo topic che mi sembra contenga info per te utili (e lì non stanno usando il comodo shield che hai invece tu):
https://forum.arduino.cc/index.php?topic=183302.0

ah gia per i segnali non ci avevo pensato hai ragione infatti nel link lo hanno collegato direttamente ma con resistenze!
comunque ho fatto altre ricerche, e tutti e due i venditori hanno lo shield che ho comprato e sono risalito al sito del produttore che è questo
http://www.elecfreaks.com/store/lcd-tft01-arduino-shield-v20-shd09-p-213.html
ora nel negozio dove ho preso il display ha anche il display da 2,4 che è praticamente identico al mio la sola differenza sta nella dimensione dello schermo, controllore numero e posizione dei pin identici quindi in teoria anche con il mio deve funziionare!
controllando lo shield ci sono montati 4 74HC541 che sono dei line driver il funzionamento non l ho capito molto bene se non erro secondo il livello logico dato mette in diversi stati i suoi I/O.
e poi ce un regolatore di tensione che porta appunto la tensione da 5V a 3,3V, a questo punto mi viene da pensare che non ci ho capito una mazza con il codice.
io ho provato con le librerie che si trovano UTFT e con gli esempi inseriti in esso cambiando solo la parte TFT myGLD inserendo tra le parentesi il mio display e cioè SSD1289 e i pin A5,A4,A3;A2 non posso postare direttamente il codice che adesso non sono a casa spero si capisca anche cosi altrimenti appena posso posto il codice.

vale88:
ora nel negozio dove ho preso il display ha anche il display da 2,4 che è praticamente identico al mio la sola differenza sta nella dimensione dello schermo, controllore numero e posizione dei pin identici quindi in teoria anche con il mio deve funziionare!

Beh che i pin siano identici non è detto che si gestiscano allo stesso modo. Ti conviene cercare esempi specifici per il tuo modello esatto.

non posso postare direttamente il codice che adesso non sono a casa spero si capisca anche cosi altrimenti appena posso posto il codice.

Meglio se posti il codice, quanto meno se qualcuno ha il tuo stesso display (io no) magari lo può provare direttamente. Ma, ripeto, ci saranno in rete sketch di esempio da provare?

allora il codice che sto provando e questo

// UTFT_Demo_320x240 
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// 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 320x240 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(ITDB32,A5,A4,A3,A2);

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

void loop()
{
  int buf[318];
  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, 319, 13);
  myGLCD.setColor(64, 64, 64);
  myGLCD.fillRect(0, 226, 319, 239);
  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://www.RinkyDinkElectronics.com/>", CENTER, 227);

  myGLCD.setColor(0, 0, 255);
  myGLCD.drawRect(0, 14, 319, 225);

// Draw crosshairs
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(159, 15, 159, 224);
  myGLCD.drawLine(1, 119, 318, 119);
  for (int i=9; i<310; i+=10)
    myGLCD.drawLine(i, 117, i, 121);
  for (int i=19; i<220; i+=10)
    myGLCD.drawLine(157, i, 161, i);

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

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

  delay(2000);

  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);
  myGLCD.setColor(0, 0, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.drawLine(159, 15, 159, 224);
  myGLCD.drawLine(1, 119, 318, 119);

// Draw a moving sinewave
  x=1;
  for (int i=1; i<(318*20); i++) 
  {
    x++;
    if (x==319)
      x=1;
    if (i>319)
    {
      if ((x==159)||(buf[x-1]==119))
        myGLCD.setColor(0,0,255);
      else
        myGLCD.setColor(0,0,0);
      myGLCD.drawPixel(x,buf[x-1]);
    }
    myGLCD.setColor(0,255,255);
    y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100)));
    myGLCD.drawPixel(x,y);
    buf[x-1]=y;
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some filled rectangles
  for (int i=1; i<6; i++)
  {
    switch (i)
    {
      case 1:
        myGLCD.setColor(255,0,255);
        break;
      case 2:
        myGLCD.setColor(255,0,0);
        break;
      case 3:
        myGLCD.setColor(0,255,0);
        break;
      case 4:
        myGLCD.setColor(0,0,255);
        break;
      case 5:
        myGLCD.setColor(255,255,0);
        break;
    }
    myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20));
  }

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some filled, rounded rectangles
  for (int i=1; i<6; i++)
  {
    switch (i)
    {
      case 1:
        myGLCD.setColor(255,0,255);
        break;
      case 2:
        myGLCD.setColor(255,0,0);
        break;
      case 3:
        myGLCD.setColor(0,255,0);
        break;
      case 4:
        myGLCD.setColor(0,0,255);
        break;
      case 5:
        myGLCD.setColor(255,255,0);
        break;
    }
    myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20));
  }
  
  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some filled circles
  for (int i=1; i<6; i++)
  {
    switch (i)
    {
      case 1:
        myGLCD.setColor(255,0,255);
        break;
      case 2:
        myGLCD.setColor(255,0,0);
        break;
      case 3:
        myGLCD.setColor(0,255,0);
        break;
      case 4:
        myGLCD.setColor(0,0,255);
        break;
      case 5:
        myGLCD.setColor(255,255,0);
        break;
    }
    myGLCD.fillCircle(100+(i*20),60+(i*20), 30);
  }
  
  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

// Draw some lines in a pattern
  myGLCD.setColor (255,0,0);
  for (int i=15; i<224; i+=5)
  {
    myGLCD.drawLine(1, i, (i*1.44)-10, 224);
  }
  myGLCD.setColor (255,0,0);
  for (int i=224; i>15; i-=5)
  {
    myGLCD.drawLine(318, i, (i*1.44)-11, 15);
  }
  myGLCD.setColor (0,255,255);
  for (int i=224; i>15; i-=5)
  {
    myGLCD.drawLine(1, i, 331-(i*1.44), 15);
  }
  myGLCD.setColor (0,255,255);
  for (int i=15; i<224; i+=5)
  {
    myGLCD.drawLine(318, i, 330-(i*1.44), 224);
  }
  
  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

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

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

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

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

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

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

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

  delay(2000);
  
  myGLCD.setColor(0,0,0);
  myGLCD.fillRect(1,15,318,224);

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

  delay(2000);

  myGLCD.fillScr(0, 0, 255);
  myGLCD.setColor(255, 0, 0);
  myGLCD.fillRoundRect(80, 70, 239, 169);
  
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.print("That's it!", CENTER, 93);
  myGLCD.print("Restarting in a", CENTER, 119);
  myGLCD.print("few seconds...", CENTER, 132);
  
  myGLCD.setColor(0, 255, 0);
  myGLCD.setBackColor(0, 0, 255);
  myGLCD.print("Runtime: (msecs)", CENTER, 210);
  myGLCD.printNumI(millis(), CENTER, 225);
  
  delay (10000);
}

io l unico cambiamento che ho fatto è sulla riga seguente

UTFT myGLCD(ITDB32,A5,A4,A3,A2);

dove ho cambiato il modello e i pin, nella libreria c'è un documento PDF dove sono elencati i codici modello secondo il tipo di controller, li ho provati tutti ma non vanno!
non è possibile che non funzioni anche solo il display dovrebbe funzionare!