Probleme d'affichage d'image sur écran TFT

Hello à tous,

J'arrive à la fin de mon projet d'hydroponie, et tout fonctionne sauf un aspect, cela fait plus d'un mois que je cherche le problème mais je commence réellement à désespérer :

-il m'est impossible d'afficher proprement une image sur mon écran TFT à partir d'une carte SD.

J'ai essayé les deux libraries (tinyfat & SDraw), la première ne me donne absolument rien du tout, la seconde fonctionne mais ne me donne pas les bonnes couleurs.

Même s'il est possible de faire une inversion des couleurs dans SDraw, rien n'y fait, le rendu n'est pas du tout fidèle à l'image originale.

Voici le code

#include <SPI.h>
// SdFat lib from here :-
// https://github.com/greiman/SdFat/archive/master.zip
#include <SdFat.h>
#include <UTFT.h>
#include <URTouch.h>
#include <UTFT_Buttons.h>
#include <UTFT_SdRaw.h>
extern uint8_t SmallFont[];
extern uint8_t BigFont[];

#define SD_CHIP_SELECT 53 // SD chip select pin
// file system object
SdFat sd;
// print stream
ArduinoOutStream cout(Serial);

int wait = 2, pressed_button;

UTFT myGLCD(ILI9486, 38, 39, 40, 41);

URTouch myTouch( 6, 5, 4, 3, 2);

UTFT_SdRaw myFiles(&myGLCD);
UTFT_Buttons myButtons(&myGLCD, &myTouch);

void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println(F("Initialising SD card..."));
bool mysd = 0;
// see if the card is present and can be initialized:
while (!mysd)
{
if (!sd.begin(SD_CHIP_SELECT, SPI_FULL_SPEED)) {
Serial.println(F("Card failed, or not present"));
Serial.println(F("Retrying...."));
}
else
{
mysd = 1;
Serial.println(F("Card initialised."));
}
}
Serial.println(F("Initialising LCD."));
myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(SmallFont);
myTouch.InitTouch();
myTouch.setPrecision(PREC_MEDIUM);
myGLCD.fillScr(255,255,255);
myButtons.setTextFont(BigFont);
int butskip = myButtons.addButton( 85, 219 , 70, 20, "Skip");
Serial.println(F("LCD initialised."));

myFiles.load(0, 0, 60, 51, "therm60x51.RAW",1,1);
myFiles.load(300, 0, 60, 51, "1therm.RAW",16,1);
myFiles.load(100, 100, 48, 63, "clock48x63.RAW",1,1);
myFiles.load(200, 200, 28, 28, "moon28x28.RAW",1,1);
myFiles.load(300, 280, 30, 30, "home30x30.RAW",1,1);

}

void loop()
{
}

Comme vous pouvez voir en pièce jointe, les couleurs ne correspondent pas du tout, et le rendu n'est pas net.

Voici l'écran que je possède, ECRAN

même si je doute fortement que le problème vient de là. Tout le reste a toujours marché, la librairie UTFT etc.

Je serai éternellement reconnaissant pour toute aide utile !

Merci :slight_smile:

6clock.png

1therm.png

Bonsoir,

Cela ressemble assez à un problème d'encodage des couleurs.
Tu utilises l'utilitaire fournit avec la librairie UTFT pour convertir tes images?

Exactement, j'utilise le "imageconverter565" qui se trouve dans le fichier tool de la libraire UTFT.

Je me suis également posé la question si éventuellement le problème venait de la conversion, j'ai essayé d'utiliser le 2eme programme proposé dans le meme fichier, mais il se coupe dès son lancement. De plus, pas moyen de trouver un programme correct pour lire les images une fois qu'elles sont converties en raw. Cela aurait pu m'assurer que le soucis ne vient pas de la conversion.

Cependant j'ai arreté de penser que le probleme pouvait se situer là, au moment ou j'ai utilisé des images raw d'origines qui n'étaient pas non plus correctement affichée sur l'écran. (Les images du projet iAqua déjà aux format raw)

Aurais-tu une idée ? :slight_smile:

up