Créer une structure en mémoire flash

Bonjour, Voila, mon programme commence à atteindre les limites de la SRam de mon Uno (68%) et je cherche par tous les moyens à faire de la place. Par exemple 'Seirial.print(F("texte"))'. J'ai une structure de 40 lignes qui contiens un menu avec tous les éléments d'affichage, de navigation, d'action et de texte:

typedef struct {
  uint16_t niv: 4;
  uint16_t y: 2;
  uint16_t x: 5;
  uint16_t dest: 5;
  uint32_t touche: 7;
  uint32_t Al: 20;
  uint32_t Ac: 1;
  char *   Txt;
} infomenu_t;

Pour acceder à une ligne 'j', j'utilise MENU[j].niv par exemple.

Je souhaite passer cette structure en mémoire Flash avec 'PROGMEM' mais je ne trouve rien pour une structure.

Pouvez vous m'aider? Merci

Bonjour,

Peut-être la solution ici

Et ici.

Merci, j’ai visité les liens, mais j’ai l’impression que ma structure est toujours en SRAM. Car ça n’a pas dimpact sur les variables global. Je présente mon code:

#include <avr/pgmspace.h>

typedef struct {
  uint16_t niv:4;
  uint16_t y:2;
  uint16_t x:5;
  uint16_t dest:5;
  uint32_t touche:7;
  uint32_t Al:20;
  uint32_t Ac:1;
  char *   Txt;
} infomenu_t;

PROGMEM const infomenu_t MENU[33] ={                              // Charge la structure en mémoire Flash
  //Niv y   x   Dest  Tou Code Al  Ac Texte
  { 0,  2,  5,  17,   0,  0,      0, "CODE:"},
  //Niv y   x   Dest  Tou Code Al  Ac Texte
  { 1,  0,  3,  0,    0,  0,      0, "MENU PRINCIPAL"},
  { 1,  1,  0,  1,    49,  519000, 1, "1 Activer"},
  { 1,  2,  0,  1,    50,  519000, 0, "2 Desactiver"},
  { 1,  3,  18, 2,    68, 0,      0, "->"},
  //Niv y   x   Dest  Tou Code Al  Ac Texte
  { 2,  0,  3,  17,   0,  0,      0, "MENU PRINCIPAL"},
  { 2,  1,  0,  3,    51,  0,      0, "3 Active / Zone"},
  { 2,  2,  0,  5,    52,  0,      0, "4 Desac / Zone"},
  { 2,  3,  0,  7,    53,  0,      0, "5 Reglages"},
  { 2,  3,  18, 1,    71, 0,      0, "<-"},
  //Niv y   x   Dest  Tou Code Al  Ac Texte
  { 3,  0,  1,  17,   0,  0, 0, "Active / Zone"},
  { 3,  1,  1,  1,    49,  511000, 1, "1Peri"},
  { 3,  2,  1,  1,    50,  512000, 1, "2Volu"},
  { 3,  1,  12, 1,    51,  513000, 1, "3Feu"},
  { 3,  2,  12, 1,    52,  514000, 1, "4Cabanon"},
  { 3,  3,  18, 4,    68, 0,      0, "->"},
  //Niv y   x   Dest  Tou Code Al  Ac Texte
  { 4,  0,  1,  17,   0,  0,      0, "Active / Zone"},
  { 4,  1,  1,  1,    53,  515000, 1, "5Piscine"},
  { 4,  2,  1,  1,    54,  516000, 1, "6Garage"},
  { 4,  1,  12, 1,    55,  517000, 1, "7Tech"},
  { 4,  3,  18, 3,    71, 0,      0, "<-"},
  //Niv y   x   Dest  Tou Code Al  Ac Texte
  { 5,  0,  1,  17,   0,  0, 0,   "Desactive / Zone"},
  { 5,  1,  1,  1,    49,  511000, 0, "1Peri"},
  { 5,  2,  1,  1,    50,  512000, 0, "2Volu"},
  { 5,  1,  12, 1,    51,  513000, 0, "3Feu"},
  { 5,  2,  12, 1,    52,  514000, 0, "4Cabanon"},
  { 5,  3,  18, 4,    68, 0,      0, "->"},
  //Niv y   x   Dest  Tou Code Al  Ac Texte
  { 6,  0,  1,  17,   0,  0,      0, "Desactive / Zone"},
  { 6,  1,  1,  1,    53,  515000, 0, "5Pidcine"},
  { 6,  2,  1,  1,    54,  516000, 0, "6Garage"},
  { 6,  1,  12, 1,    55,  517000, 0, "7Tech"},
  { 6,  3,  18, 3,    71, 0,      0, "<-"},
  //Niv  Niv   y    x    x  Destination Touche    Code Al    x6               Action     Texte
  { 7,  0,  1,  17,   0,  0,      0, "Reglages"}
};

void setup() {
  Serial.begin(9600);                   
  Serial.println("Setup Complete!");          // Prét

}

void loop() {
  Serial.println(MENU[1].Txt);
}

Merci

Merci pepe,
Ca fonctionne niquel!
il est vrai que je n’ai pas trouvé grand chose et encore moins pour les structures.
Merci encore!