Display TFT 2.4'' touchscreen MCUFRIEND problemi gestione touchscreen

Ciao a tutti,
ho acquistato questo monitor su ebay compreso di arduino uno ma sto avendo non pochi problemi.
Neanche la libreria trovata sul sito di Mcufriend mi funzionava,mi rimaneva lo schermo bianco flashante.
Cercando,sono arrivato a un video dove fixava questo problema ed ho scaricato la libreria che effettivamente funziona.
Purtroppo ho problemi con l'esempio TFTPaint,in quanto ho le coordinate del touchscreen invertite,stò seguendo vari fix trovati in internet ma ancora non risolvo.
Ho un 2.4'' TFT display, MCUFRIEND (monta ILI9341 LCD driver) su Arduino Uno.
qui Libreria e Videotutorial .
Stò seguendo anche questo topic,anche se vecchio:
Topic
Qualcuno ha esperienza con questo display? Sapete aiutarmi? Grazie mille

Io non lo ho mai usato ma è lo stesso di Adafruit io proverei a utilizzare la lib di adafruit.

Sono riuscito alla fine con ricerche online a farlo funzionare,diciamo che è stato accroccato.
Ho una domanda:

negli script definiscono i colori in questo modo

#define BLACK 0x0000 // Definisco i colori
#define BLUE 0x001F //
#define RED 0xF800 //
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

E poi lo usano cosi:

tft.setTextColor(WHITE);

Se io volessi modularizzare il tutto,ad esempio ho disegnato sei pulsanti,voglio modificare il colore: dovrei modificare tutte le stringhe una ad una.
Posso invece creare una variabile SfondoBottone,dove salvo li il colore? Se si,come? non ho idea di che tipo assegnare la variabile. Grazie

Sono numeri unsigned int, 16 bit infatti WHITE => 0xFFFF quindi 2 byte
Se vuoi essere certo, apri la libreria e cerca in un file .h la definizione di setTextColor, ovvero il tipo del parametro che richiede la funzione

Ciao,si alla fine ho risolto e stavo per scrivere la soluzione :smiley:

Io ho fatto cosi (preso dalla libreria di adafruit):

uint16_t colore = YELLOW;

Ciao ragazzi..sono di nuovo qui a scrivere perchè ho di nuovo problemi:

Purtroppo mi sono accorto che ho pochissime uscite a disposizione o meglio "Utilizza pin digitali 5-13 e 0-3 analogici.Ciò significa che è possibile utilizzare pin digitali 2, 3 e analogici 4 e 5. Pin 12 è disponibile se non si utilizza la micro SD"

Quindi 2 Analogici e 3 Digitali. A me servono molti di piu'. Ho pensato allora alla soluzione meno drastica: un altro arduino in slave a cui delegare il tutto.

Cercando su internet,ho letto che per farli comunicare bastano 2 pin analogici ma ho un problema,l'A4 è usato per il reset!!
Sul sorgente c'è scritto

#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

Guardando l'immagine,il display ha la pedinatura che va sia su A4 che sul pin RESET (quello nella zona power).

Ovviamente omettendo dal codice la parte di definizione di LCD_RESET mi dà errore.

Come faccio quindi a dire di prendersi il suo RESET e lasciarmi libero l'A4?

Altra domanda: Io con il display,disegno un pulsante che se premuto eccita un relè,facendo questo gioco del secondo arduino in slave,ho un ritardo? Se si,è accettabile e superfluo o si nota?? Grazie mille

minimanimo:
Sono riuscito alla fine con ricerche online a farlo funzionare,diciamo che è stato accroccato.

Ne ho preso uno 2.4 molto simile. Che lib hai usato ?

#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>

Ma occhio al driver che monti.

EDIT: il venditore invece mi ha mandato questo link:
Link Libreria

Non le ho provate perchè mi ha risposto qualche giorno dopo aver risolto.

minimanimo:
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>

Ma occhio al driver che monti.
EDIT: il venditore invece mi ha mandato questo link: Link Libreria
Non le ho provate perchè mi ha risposto qualche giorno dopo aver risolto.

Grazie, appena posso, le provo.

questo è lo schema

schematic-shd028.pdf (20.5 KB)

Ciao minimanimo,
anche io ho il tuo stesso problema con questo display.
Infatti vorrei utilizzare questo display per visualizzare i dati provenienti da sensori I2C ad esempio un modulo RTC DS1307. Mi risulta che per i dispositivi I2C si utilizzano i pin A4 e A5 come SDA e SCL ma poichè il pin A4 viene utilizzato dal display non saprei come fare a collegare i vari dispositivi.

Sono giorni che cerco su google ma no ntrovo nulla di interessante.
Qualcuno ha una soluzione a questo problema?

Grazie

minimanimo:
Quindi 2 Analogici e 3 Digitali. A me servono molti di piu'. Ho pensato allora alla soluzione meno drastica: un altro arduino in slave a cui delegare il tutto.

Cercando su internet,ho letto che per farli comunicare bastano 2 pin analogici ma ho un problema,l'A4 è usato per il reset!!

Questo per farli comunicare in I2C.
Potete anche farli comunicare via seriale.
Per evitare di dover smontare tutto quando si deve caricare il programma, conviene usare la soft serial sulle porte I/O 2 e 3, conviene farlo su entrambi proprio per lasciare libere 0 ed 1.
A questo punto, sullo "slave" rimangono disponibili tutte le altre I/O analogiche e digitali ed anche le I2C.
E' una soluzione che consente anche di sfruttare le risorse dello "slave", in quanto il "master" sarà praticamente totalmente impegnato nella gestione dello schermo.
Il ritardo sarà inavvertibile, all'atto pratico, a meno di errori nella stesura dei due programmi.
Forse vale la pena dedicarsi alla realizzazione di una scheda "standalone" (in questo caso standinsieme) con due atmega328.

anche io ho acquistato quel display della mcufriend, sono riuscito a farlo funzionare con le librerie di adafruit, ma il touchscreen mi rimaneva con le coordiante invertite, sono riuscito a sistemare l'errore delle coordinate invertite intervenendo sulla funzione map(value, fromLow, fromHigh, toLow, toHigh) usandola per ribaltare i valori in p.x e p.y map(value, fromLow, fromHigh, toHigh, toLow) come di seguito:

//Code below to fix the bug of inverted coordinates
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0 );
p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0 );

Salve a tutti, con lo stesso display vorrei leggere delle temperature ed attivare dei relè, non essendo pratico avrei bisogno di un listato che mi permetta di avere una guida semplice per capire bene il funzionamento di questo dispositivo. Grazie per la disponibilità.

Buongiorno,

ho aquistato un display grafico 2.2 320x240 ili9341, e seguendo alcune guide in rete non sono ancora riuscito a vidualizzare nulla, solo schermo bianco, ho utilizzato le librerie della Adafruit e anche altre mod. da altri utenti ma nulla, utilizzo Arduino uno R3 e metto il link del venditore ebay
http://www.ebay.it/itm/262455244436?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

qualcuno mi potrebbe dare una mano a sbrogliare questa matassa?? :slight_smile:
Grazie infinite.

Prova a leggere qui: LCD display with ILI9341 driver on Arduino - Displays - Arduino Forum
Io ho quel display e mi funziona, ora in ufficio non ricordo quale lib uso.
Attenzione però che quel display mi pare a 3,3V e se gli dai 5V per troppo tempo lo scassi.

P.S. Non mi pare inoltre che quel display sia una shield MCUFriend, era meglio aprire un thread separato, visto che non siamo in argomento del thread

Buonasera a tutti.
scrivo in questa discussione già esistente, senza farne una nuova dato che ho lo stesso problema con un display Mcufriend acquistato sabato scorso ad una fiera....

anzitutto la shield non è proprio identica a quella in foto nel messaggio 5, la mia sotto ha solamente 2 chip, i pin di connessione all'arduino, e lo slot per la microSD; ma cosa importantissima sulla mia shield c'è stampigliata la sigla 9320, che in pratica identifica il chip driver in 9320, diverso da tutte le varie discussioni che ho trovato cercando info.....

io ho già provato con queste librerie:
-Adafruit_ILI9341-master
-Adafruit-GFX-Library-master
-TFTLCD-Library-master

ma l'unico "miglior" risultato che ottengo è uno schermo bianco che "lampeggia" poco vistosamente...caricando l'esempio TFTLCD-library-master>graphicstest
con questo caricato in arduino, dal monitor seriale leggo questo:

"TFT LCD test
Using Adafruit 2.8" TFT Breakout Board Pinout
TFT size is 240x320
Unknown LCD driver chip: 9320
If using the Adafruit 2.8" TFT Arduino shield, the line:

  • #define USE_ADAFRUIT_SHIELD_PINOUT*
    should appear in the library header (Adafruit_TFT.h).
    If using the breakout board, it should NOT be #defined!
    Also if using the breakout, double-check that all wiring
    matches the tutorial."

io sono alle "basi" con arduino, purtroppo....
se qualcuno mi da una mano e 2 dritte per cavar fuori qualcosa con sto display infiniti ringraziamenti!

mi autorispondo da solo :o

non so se è stato un colpo di genio o di ...fondoschiena... :slight_smile:

in pratica facendo un'altra ricerca (quando mi incaponisco...) son arrivato a questa discussione:

https://forum.arduino.cc/index.php?topic=366304.0

ho scaricato l'allegato del primo post

  • MCUFRIEND_kbv-2.9.3.zip, salvato nella mia library dell'ide, dall'ide ho importato la nuova libreria, poi ho provato a caricare su arduino qualche esempio di quella libreria e come per magia il mio nuovo "giocattolo" ha iniziato a far apparire dei testi, dei colori ed altro !!!! che bello!

adesso però spero anche di riuscire a capirci qualcosa e fare qualche bel progettino !

chissà che questo mio post serva a qualcun altro in "panne"

buonanotte a tutti!!!

>Doc77: essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo