Problème d'affichage sur écran TFT si plus de 10 images différentes chargées

Bonjour,

J’ai une Mega2560 et un écran TFT 480*320px, j’utilise la librairie “TFT_HX8357” pour le faire tourner.

Mon problème est le suivant : j’ai enregistré différents icônes dans ma mémoire flash (avec PROGMEM), que j’affiche ensuite avec une fonction. Si j’affiche 9 icônes (différents) sur mon écran, tout roule. Passé la barre de 10, c’est la catastrophe, l’écran reste blanc, c’est à n’y rien comprendre. En revanche, je peux sans problème afficher 100 fois le même icône.

Voici la fonction qui affiche les icônes :

#define BUFF_SIZE 96 // Buffer 96 px
void drawIcon(const unsigned short* icon, int16_t x, int16_t y, int8_t width, int8_t height) {
  uint16_t  pix_buffer[BUFF_SIZE]; // Pixel buffer (16 bits per pixel)
  tft.setWindow(x, y, x + width - 1, y + height - 1);
  uint16_t nb = ((uint16_t)height * width) / BUFF_SIZE;
  for (int i = 0; i < nb; i++) {
    for (int j = 0; j < BUFF_SIZE; j++) { pix_buffer[j] = pgm_read_word(&icon[i * BUFF_SIZE + j]); }
    tft.pushColors(pix_buffer, BUFF_SIZE); }
  uint16_t np = ((uint16_t)height * width) % BUFF_SIZE;
  if (np) {
    for (int i = 0; i < np; i++) pix_buffer[i] = pgm_read_word(&icon[nb * BUFF_SIZE + i]);
    tft.pushColors(pix_buffer, np); }
}

Et la manière dont je les enregistre :

const unsigned short fdp[1936] PROGMEM={0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF (etc etc...)

Vraiment, là, je sèche… Si quelqu’un a une piste…

Merci d’avance !