Caricare immagini da SD su display tft

Ciao,
utilizzo un mega e un display TFT 800X480, ho problemi con la microSD nella lettura delle immagini. Premetto che utilizzo già questo sistema su altri progetti e funziona, ma ho sempre utilizzato SD standard, la libreria è questa:

http://www.rinkydinkelectronics.com/library.php?id=53

Vi allego anche il codice, sono poche righe, giusto per testare, il problema è questo, la microSD l’ho testata con il programma di test e funziona, si scrive e si legge. Con il programma che dovrebbe caricare la foto, arduino si blocca all’inizializzazione della sd, se tolgo fisicamente la microSD dal lettore, il programma funziona regolarmente.

Vi devo precisare che non posso cambiare arduino per questo progetto, perchè ho fissato praticamente dietro al display il convertitore livelli ttl e arduino stesso, per esigenze di spazi, quindi non posso rismontare per fare test in altri modi, gli stampati già delicati si fottono solo a guardarli… Quello che mi chiedo, se con il programma di test la sd funziona, il problema può essere dovuto alle microSD? La formattazione l’ho fatta in FAT come sempre… Consigli?
Grazie, un saluto

Test_SD_display.ino (731 Bytes)

Non è capitato a nessuno vedo... :slightly_frowning_face:

Secondo me non sei stato molto chiaro. Dai per scontato che si capisca quali cose hai fatto.
1."Premetto che utilizzo già questo sistema su altri progetti e funziona, ma ho sempre utilizzato SD standard, la libreria è questa:"
Cioè ? La libreria del link è quella che utilizzi di solito o è nuova e in altri progetti usi quella SD standard ?
Se in altri progetti usi quella standard, perché non usi anche qui quella ?

2.alleghi del codice e parli di un programma di test. Ma quello che alleghi funziona o no ? E quello di test è quello dato con la libreria del link ? Quale funziona e quale no ? Non si capisce.

Ciao, in effetti rileggendomi, non ho scritto tanto bene...
Nel primo punto volevo dire che la libreria, il display e il sistema di caricamento immagini l'ho già utilizzato per altri progetti e funziona, solo che ho sempre utilizzato SD standard, cioè grandi. La libreria è questa, è sempre la solita.
In questo progetto non posso utilizzare la SD standard per problemi di spazio, l'ho scritto, quindi volevo utilizzare una microSD.
Il codice che allego funziona, è ridotto al minimo, per capirlo meglio, funziona su tutti i progetti, tranne questo, dove ripeto, l'unica differenza è usare una microSD.
Grazie

Ciao, spero di poterti dare una mano, conosco quelle librerie.
In linea di massima non c'è distinsione tra SD o microSD (TF).
Di che grandezza è la microSD ?? Considera che quelle librerie dovrebbero funzionare solo con memorie dalla capacità massima di 2GB. Con quelle superiori, le HC, non puoi utilizzare quelle librerie.
Fino a lunedì non potrò fare test, ma ne avrai bisogno farò qualche prova con il tuo Sketch.
Se la memoria con cui hai problemi è al massimo di 2GB...hai già provato con un' altra?

Ciao,
so del problema delle SD per quella libreria, il limite dei 2 GB, forse è teorico, perchè tanti usano SD anche da 16 e 32 GB, anche io con SD normali ho usato quelle da 16GB... Quà sto usando microSD, una kingston da 4 GB HC e una EURO BLU sempre da 4 GB HC, cos'altro posso comprare?

thedrifter:
Ciao, in effetti rileggendomi, non ho scritto tanto bene...
Nel primo punto volevo dire che la libreria, il display e il sistema di caricamento immagini l'ho già utilizzato per altri progetti e funziona, solo che ho sempre utilizzato SD standard, cioè grandi. La libreria è questa, è sempre la solita.
In questo progetto non posso utilizzare la SD standard per problemi di spazio, l'ho scritto, quindi volevo utilizzare una microSD.

Una cosa che ancora non mi è chiara è l'hw. Ma il lettore SD è integrato nel display o è un modulo separato ?
Se è un modulo separato, prima usavi moduli per SD normali e ora hai preso un modulo per microSD ?

nid69ita:
Una cosa che ancora non mi è chiara è l'hw. Ma il lettore SD è integrato nel display o è un modulo separato ?
Se è un modulo separato, prima usavi moduli per SD normali e ora hai preso un modulo per microSD ?

Ciao, il display ha integrato il modulo per SD normali, ma è in una posizione scomoda per quello che devo farci, quindi sto usando un modulo separato per microSD. Si, in tutti gli altri progetti ho sempre usato moduli per SD normali, per questo pensavo la causa potessero essere le microSD.....
Ti preciso ancora che il modulo funziona e la microsd pure, provato con un codice di test per le sd.

Le MicroSD e le SD sono elettricamente compatibili. Se provi a smontare un adattatore vedrai che non c'è nessun componente attivo, solo dei fili che collegano le piazzole.

Quindi di per sé il fatto di usare una MicroSD non è un problema, ma magari lo è quella particolare MicroSD, ne hai provata un'altra? Non ci sono nemmeno problemi con il limite dei 2 GB, ne ho personalmente usate fino a 32 GB.

EDIT: No, però se dici che col programma di test si scrive e si legge, funziona. Non è che hai poca memoria a disposizione e la libreria non riesce ad allocare qualche buffer?

Allora ragazzi, ho scoperto il problema, ed effettivamente sono le SD, sono andato a prendere una di quelle usate negli altri progetti, e con quella funziona... Ora ho comprato 4 SD fra normali e micro e non ne funziona una, cosa compro a questo punto??? Il problema è comunque questa libreria per caricare le immagini nei display, perchè qualsiasi altro utilizzo delle SD funziona.....
Grazie per l'aiuto

SukkoPera:
Non ci sono nemmeno problemi con il limite dei 2 GB, ne ho personalmente usate fino a 32 GB.

Io ebbi problemi con quelle superiori ai 2GB, poi non ho fatto altre prove perché 2GB erano più che sufficienti per quello che mi serve, però vorrei chiederti una cosa, non ci sono problemi anche sulla creazione di file di testo? io oltre ad usare la SD per leggere le foto la uso anche per registrare file di log ed ebbi problemi a farlo, ma poi non ci sono ritornato per i motivi come sopra.

Rieccomi dopo diverse prove... Io non ne vengo a capo, ho comprato altre microSD, da 2 gb, ma niente da fare; ripeto che i file di testo e tutto il resto funziona, il malfunzionamento è legato solo alla libreria per il caricamento nei display, attualmente ho solo una SD che mi funziona. Se qualcuno ha comprato di recente una microSD per questi usi e cortesemente potesse indicarmi il modello preciso di sd e dove l'ha acquistata, mi farebbe un favore... Altrimenti abbandonerò i progetti con questi display, o perlomeno il caricamento di immagini e/o sfondi...
Grazie ancora a tutti

Se non ho capito male tu hai un display TFT con integrato lo slot per microSD ma siccome quest'ultimo sta in una posizione scomoda ne hai messo un altro.
Se è così io sospetto un problema hardware, le linee vanno ad entrambi gli adattatori.

Si, hai capito bene, le linee che vanno al display sono scollegate, è collegato solo l'adattatore che è montato su arduino; e poi se con altri vari programmi che usano l'sd funziona, non è un problema hardware...

La libreria tinyFAT sembra vecchiotta, non è che allora il problema è li?
Nei test usi sempre quella libreria oppure la SD? O la sdFat?

Fra l'altro c'è scritto che non supporta le SD oltre i 2GB, qundi non supporta le SD HC

The library supports FAT16 formatted SD cards up to 2GB in size. 4GB FAT16 formatted SD cards does not work. Long filenames are not supported. Keep your filenames compliant with the old 8.3 standard.

Inoltre mi sa che hai problemi di RAM: quant'è grande il file logo.raw?

Si, sono librerie vecchie, ma c'è solo quella per questi display... nei test uso la libreria SD.
Il discorso dei 2 GB è già stato smentito da molti, tanti hanno utilizzato SD anche da 32 GB, e comunque ne ho comprate anche da 2 GB non HC (che si trovano male), e non va lo stesso.
Il file è 280X280, ma non è un problema di RAM, in altro progetto uso un'immagine per tutto il display 800X480 con anche un programma complesso, e tutto funziona normalmente...

E' la libreria tinyFat che dichiara di non gestire le SD superiori a 2 GB.
La libreria SD e sdFat non hanno questo limite.

Il file 280*280 potrebbe portare problemi se si tenta di caricarlo tutto in memoria. Se invece lo si legge a pezzi e i pezzi vengono mandati al TFT allora va bene.
Ma non conosco quelle librerie.

Esatto, io ho detto di avere usato SD > 2 gb ma non avevo capito che si parlasse di tinyFAT. Io ho usato la libreria SD standard e SdFatLib.

Ciao,
forse mi sfugge qualcosa…
io per utilizzare i display uso la libreria UTFT e UTFT_tinyFAT, infatti nelle dichiarazioni del programma si vede così:

#include <tinyFAT.h>
#include <UTFT.h>
#include <UTFT_tinyFAT.h>

#define LUCE_DISPLAY  7

extern uint8_t SmallFont[];
extern uint8_t BigFont[];

UTFT         myGLCD(CTE50CPLD, 38, 39, 40, 41);
UTFT_tinyFAT myFiles(&myGLCD);

Ora non so se sia possibile cambiare la libreria della SD con la SD standard o SdFatLib, nel caso sono rimasto con quella vecchia fino ad ora per nulla???
Però nel sito della libreria UTFT anche il tipo che l’ha sviluppata diceva che non la seguiva più e non faceva più aggiornamenti causa diverse complicanze; io pensavo che questo tipo avesse modificato appositamente anche la libreria tinyFAT per poterla integrare con la UTFT sbaglio?

Ci avevo pensato anche io ma nel piccolo sketch che hai allegato nel primo post c'è questa istruzione

myFiles.loadBitmap(100, 0, 280, 280, "logo.raw"); (da cui il mio dubbio sulla memoria, se questa istruzione carica tutto...)

Che nella libreria SD credo proprio che non ci sia.
Però nella libreria TFT Adafruit c'è un esempio pre caricare bitmap bmp così come credo che ci siano altri esempi.

La libreria UTFT è invece ampiamente utilizzata.
Se però stai usando un TFT shield, di quelli che si montano sull'Arduino UNO potresti usare anche quella di cui parlano qui

anche se il driver del tuo TFT, che nella UTFT viene definito come CTE70, mi pare sconosciuto.