#include <SPI.h>
#include <SD.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include <Adafruit_ImageReader.h>

// Définition des pins pour l'écran TFT
#define TFT_CS    10
#define TFT_DC    9
#define TFT_RST   8
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
Adafruit_ImageReader reader;  // Instancie le lecteur d'images

// Défini la carte SD
#define SD_CS 4  // Pin CS pour la carte SD

void setup() {
  Serial.begin(115200);
  tft.begin();
  if (!SD.begin(SD_CS)) {
    Serial.println("Erreur de la carte SD");
    return;
  }
  
  Serial.println("Carte SD initialisée");
  
  // Charger et afficher l'image BMP
  displayImage("image.bmp");
}

void loop() {
  // Rien à faire dans la boucle principale pour afficher l'image
}

void displayImage(const char *filename) {
  // Ouvre le fichier BMP sur la carte SD
  File imageFile = SD.open(filename);
  if (!imageFile) {
    Serial.print("Erreur d'ouverture de fichier: ");
    Serial.println(filename);
    return;
  }

  // Utilise la bibliothèque ImageReader pour afficher l'image
  ImageReturnCode stat = reader.drawBMP(filename, tft);
  if (stat != IMAGE_SUCCESS) {
    Serial.print("Erreur de lecture BMP: ");
    Serial.println(stat);
  }

  imageFile.close();  // Ferme le fichier après lecture
}

//=======================================================================================