TFT LCD 3.2"

TFT LCD 3.2″ SD Touch Arduino Mega

il: 15 Aprile 2016
di: Rocco Macellaro
commenti: 18

In questo articolo vedremo come utilizzare il display TDT LCD da 3.2 pollici con touch su Arduino Mega tramite la scheda TFT Shield, per questo articolo sono state utilizzati un 3.2 pollici 240 x 320 Schermo TFT LCD + Pannello touch e una Aptotec TFT 3.2 Shield compatible with Arduino Mega2560 e un Arduino Mega2560. Utilizzeremo in questo articolo la libreria UTFT, per quando riguarda il display utilizzato per questo articolo, potrete notare che sul prodotto è riportala la sigla TFT_320QVT_9341 questo dispositivo ha però delle problematiche con l’utilizzo della libreria UTFT ma come vedremo più avanti nell’articolo esiste una versione revisionata della libreria UTFT che risolve questi problemi e consente di utilizzare la libreria anche con questa tipologia di display.

La prima cosa da fare è assemblare la shield TFT sulla nostra scheda Arduino Mega, la procedura è abbastanza semplice poiché la piedinatura della shield corrisponde esattamente con i connettori di ingresso della Scheda Arduino Mega. Fatto questo è il momento di connettere sulla shield già installata su Arduino il nostro display nell’unica piedinatura disponibile seguendo il verso delle due schede già assemblate in precedenza.

A questo punto si può procedere all’utilizzo dei dispositivi collegandoli al nostro pc ed aprendo l’IDE di Arduino. Prima di procedere dobbiamo scaricare i pacchetti software necessari, per questo esempio ho utilizzato come accennato in precedenza la libreria UTFT scaricabile da qui. Sullo stesso sito sono disponibili altre libreria che aggiungono funzionalità alla UTFT e che sono utilizzabili solo in associazione con la UTFT Library. Possiamo trovare la UTouch Library, questa libreria ci consente di sfruttare la funzionalità touch del display, la UTFT_Buttons consente di disegnare dei pulsanti sullo display, con all’interno testo o immagini. Sul display è disponibile anche un lettore di schede SD pertanto utilizzando la libreria UTFT_tinyFAT è possibile leggere il contenuto della scheda SD e visualizzare le immagini in essa contenute direttamente sul display.

Scaricata la libreria UTFT è sufficiente decomprimerla e posizionarla nella cartella libraries nella root del vostro ide arduino, oppure seguire la procedura di installazione descritta sulla pagina Installing Additional Arduino Libraries.
Quando avete terminato di installare la libreria potete aprire l’ide di Arduino e dal menù File > Esempi > troverete la voce UTFT che riguarda la libreria che avete appena installato, dal menù selezionato Arduino (AVR) e poi UTFT_Demo_320x240, si aprirà lo sketch di esempio.Scorrendo il codice potete trovare ad un certo punto la riga:

1
UTFT myGLCD(ITDB32S,38,39,40,41);

questo è il costruttore della libreria UTFT, la sigla ITDB32S riguarda il modello del display che state utilizzando e i numeri 38,39,40,41 rappresentano i piedini della shield.

Per questo esempio avevo a disposizione il display 3.2 pollici 240 x 320 Schermo TFT LCD + Pannello touch che ho scoperto subito non essere compatibile con la libreria UTFT perché una volta connesso al pc e caricato su Arduino uno qualsiasi degli esempi messi a disposizione dalla libreria il display restava sempre bianco, qualsiasi cosa facessi. Osservando la scheda ho notato la presenza di una sigla TFT_320QVT_9341 ed effettuando numerose ricerche sul web sono riuscito a trovare la soluzione, per utilizzare questo display è necessario far riferimento a una versione modificata della libreria UTFT disponibile a questo indirizzo, allo sesso modo occorre installare la libreria nell’IDE di Arduino (facendo attenzione nel rimuovere qualora aveste precedentemente già installato la versione ufficiale della libreria UTFT). Fatto questo potete utilizzare tutti gli esempi messi a disposizione della libreria semplicemente sostituendo la riga :

1
UTFT myGLCD(ITDB32S,38,39,40,41);

con la riga

1
UTFT myGLCD(ILI9341_16,38,39,40,41);

se tentate di utilizzare questo costruttore con la libreria UTFT ufficiale vi darà un errore in fase di compilazione questo perché il modello di display ILI9341_16 non è definito nella libreria.
Potreste notare problemi di allineamento con il display ovvero le immagini possono risultare spostate sulla sinistra e il touch non funzionante, per risolvere il problema basta semplicemente disconnettere il cavo usb da Arduino e riconnetterlo.

Una volta compilato e caricato l’esempio su Arduino otterrete questo risultato:

Passiamo ora verificare il funzionamento del touch, se non lo avete già fatto scaricate è installate la libreria UTouch Library allo stesso modo in cui avete installato la libreria UTFT. Fatto questo riaprite l’IDE di Arduino e vedrete sempre dal menù File > Esempi > UTouch, da questo menù selezionate Arduino > UTouch_Calibration questo esempio serve per calibrare il touch. Compilate e caricate lo sketch su Arduino (se utilizzate il display TFT_320QVT_9341 ricordatevi di sostituire la riga UTFT myGLCD(ITDB32S,38,39,40,41); con la riga UTFT myGLCD (ILI9341_16,38,39,40,41);).

Seguite le istruzioni riportate sullo schermo per eseguire la calibrazione del touch, al termine vedrete comparire sul display alcuni valori come ad esempio:

1
2
3
CAL_X 0x004ECE6CUL
CAL_Y 0x03A4C177UL
CAL_S 0x000EF13FUL

Appuntate questi valori e aprite il file presente nel percorso della cartella del vostro IDE Arduino \libraries\UTouch\UTouchCD.h con un qualsiasi editor di testo, e modificate i valori delle 3 variabili con i nuovi valori letti sul display salvate e chiudete l’editor, da questo momento il touch del dispositivo sarà correttamente calibrato.

Passiamo ora ad un esempio di utilizzo dei pulsanti, sempre dal menu File > Esempi > UTouch selezionare Arduino > UTouch_ButtonTest, compilare e caricare su Arduino, se tutto funziona correttamente vedrete sul display un tastierino numerico che potete utilizzare per testare il dispositivo sulla pressino di pulsanti numerici.

18 Replies to “TFT LCD 3.2″ SD Touch Arduino Mega”

  1. buonasera,
    innanzitutto complimenti per il bellissimo articolo che mi ha aiutato a capire meglio la problematica. Qualche giorno fa mi e’ arrivato uno schermo 3.2 che avevo acquistato su Aliexpress http://it.aliexpress.com/item/3-2-inch-TFT-LCD-screen-module-Ultra-HD-320X480-for-Arduino-MEGA-2560-R3-Board/32308745988.html che purtroppo non riporta nessun codice identificativo. Sono riuscito tuttavia a sistemare la libreria UTFT inserendo CTE32HR , 38 , 39 , 40 , 41, ma non quella UTOUCH. ha qualche suggerimento da darmi?

    grazie
    Luigi

    1. Ciao Luigi,
      Grazie mille per i complimenti, per quanto riguarda il problema dell’UTOUCH ti volevo chiedere se hai utilizzato la libreria modificata presente all’indirizzo : http://www.mediafire.com/download/8tyi1ca72x1dmbn/UTFT.rar ? se si anche sullo sketch che utilizzi per il touch è necessario sostituire la riga UTFT myGLCD (ILI9341_16,38,39,40,41) se utilizzi un display diverso da quello standard Arduino. Ricordo però di aver avuto anche io un problema con il touch (non rispondeva) mi è bastato però scollegare l’alimentazione e ricollegarla per risolvere. Spero di esserti stato utile. Saluti.

  2. Tutorial semplice, diretto e soprattutto utile. Ho acquistato questo display più di una settimana fa e per tutto questo tempo mi sono scervellato notte e giorno andando alla disperata ricerca di tutorial, librerie e via dicendo senza ottenere risultati. Grazie a questo post sono riuscito a far funzionare il mio touch screen e a aprire la mente e la fantasia verso gli innumerevoli progetti che possono essere possibili tramite questo strumento.
    GRAZIE MILLE E BUON LAVORO!

  3. Buonasera scusate ma perchè se cerco di aggiungere le librerie il programma mi dice che il file zip non è una libreia?

  4. buon giorno, sto facendo esperimenti con un display LCD retroilluminato blu che presenta solo i seguenti pins:
    DATA
    CS
    WR

    oltre i due pin per la alimentazione. come sigla riporta :JDL 0429B00-1- .
    Non trovo nessuna caratteristica in internet e non ho nessuna idea di come pilotarlo. ho potuto vedere che e’ blu col tester ma attraverso i suoi pins non lo accendo.
    Qualcuno che mi legge puo’ cortesemete darmi una diritta ? Almeno capire la sequenza di utilizzo dei pin per visualizzare una scritta e magari quale libreria cercare,
    Grazie anticipate
    Stevez

  5. Grazie Rocco, sono le persone come te disponibili e che sanno spiegare, a quelli come noi, come risolvere problematiche correlate alla misconoscenza di questo panorama. Grazie

  6. Hello sir and thank you for your article! I have a problem: even with the modified library, my screen remains blank even though I have the same reference as you … do you know where the problem comes from?

    1. what is the abbreviation of the display you use? maybe the library was not installed correctly, try removing the library and installing it again, maybe for some reason it remained the original library.

  7. Buona sera Rocco
    Volendomi avvicinare all’elettronica digitale, acquistato da poco un kit Arduino Mega 2650 + display touch 3,2″.
    Nonostate l’aver installato le librerie da te consigliate, purtroppo non riesco a convincere il display a funzionare: rimane costantemente “bianco”. Il display in oggetto mi riporta la sigla ILI9327 come driver IC. Ha qualche suggerimento da darmi in proposito?
    Complimenti per il forum, spiegato in maniera chiara , semplice e comprensibile.

    1. Ciao Ugo, Grazie mille.
      Per quanto riguarda il problema con il display da te indicato, hai già provato con la libreria scaricabile da questo percorso:
      http://www.mediafire.com/file/8tyi1ca72x1dmbn/UTFT.rar/file
      se si, prova cambiando la riga (dello sketch riportato nell’articolo)
      da UTFT myGLCD(ITDB32S,38,39,40,41);
      con UTFT myGLCD(ILI9327_8,38,39,40,41);

      facendo ulteriori ricerche sembrerebbe che esiste una libreria non ufficiale di UTFT, modificata appositamente per il display ILI9327, disponibile a questo indirizzo: https://github.com/dgolda/UTFT
      io purtroppo non possiedo questo tipo di display e non riesco a fare quindi delle prove specifiche.

  8. Grazie per questo articolo. Ho letto con molto interesse. Il mio problema è il seguente: ho acquistato su Banggood due TFT LCD 3.2 con relativa shield. Sono arrivati e ho cercato di farli funzionare. Schermo bianco. Fortunatamente trovo il tuo articolo e il mio 320_QVT_ILI9341, grazie al tuo suggerimento ha funzionato subito con la libreria modificata. Provo il secondo TFT e nulla. Schermo bianco. Penso che sia difettoso. Guardo con attenzione e noto che la scritta è diversa, si tratta di un 320_QDT_ILI9341. Un sola consonante diversa ma lo schermo non funziona. Ho provato tutte le librerie (che sono riuscito a trovare) senza risultato. Ho invertito le shield ma niente. Magari hai esperienza con questo display? Grazie mille in anticipo.

    1. Ciao Antonio, grazie mille. Per quanto riguarda il display, purtroppo non conosco la differenza con il display da te indicato (320_QDT_ILI9341) da quello utilizzato per l’articolo, posso suggerirti di cambiare nel codice di esempio, nella parte riguardante l’inizializzazione (UTFT myGLCD(ILI9327_8,38,39,40,41);) il valore ILI9327_16 con uno di questi (ILI9341_S5P, ILI9341_S4P, CTE32) se anche in questo modo non funziona, potresti provare con i suggerimenti trovati in questo post: https://forum.arduino.cc/index.php?topic=468116.0

  9. Grazie Rocco per lo stupendo articolo.volevo sapere se nel mega 2560 posso far convivere La libreria mcp 2515 del Canbus se c’è ancora spazio per elaborare delle logiche all’interno del 2560. Comunque a prima vista i piedini per il mcp2515, sono 50 51 53 ecc che sono lontani del 38 39 40 e 41 come è scritto nell’articolo. Grazie comunque

Rispondi a Matteo Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *