Tableaux récalcitrants ! ou moi... :-(

Bonjour tout le monde !

Je fais un petit menu sur un glcd avec u8glib, ça se passe pas trop mal...

Je fais faire une colonne avec les const char *menu_strings, et en face de chacun, leur valeur avec
les char *menu_values qui sont incrémentées ou décrémentées avec des boutons.

ça se passe plutôt pas mal avec les valeurs numériques et itoa(Longueur, strLongueur, 10), mais je n'arrive pas à passer dans strCalibre une des valeurs de char *calibre[] (qui sont des grosseurs de fil en mm² ou AWG, et donc par force, dans une liste préétablie).

Lu et relu plein de topics et de tutos, mais je n'ai toujours pas réussi à compiler !

Quelqu'un coup pour de main plize ?

int Longueur = 0;
char strLongueur[5] = "0";

int Quantite = 0;
char strQuantite[5] = "0";

char *calibre[] = { "0,25/23", "0,33/22", "0,50/20", "0,75/18", "1/17" ,"1,5/15", "2/14" };  // grosseur de fil


#define MENU_ITEMS 6
const char *menu_strings[MENU_ITEMS] = { "Longueur", "Calibre" ,"Quantité"};

char *menu_values[MENU_ITEMS] = { strLongueur ,strCalibre, strQuantite};

je dirais (et pareil pour strQuantite)
char strLongueur[5] = {"0"};

Probable que char *calibre[] doit être char *strCalibre[]

votre tableau

char* calibre[] = { "0,25/23", "0,33/22", "0,50/20", "0,75/18", "1/17" ,"1,5/15", "2/14" };  // grosseur de fil

ne contient pas pleins de caractères mais une liste de pointeurs vers des chaînes constantes. (c'est un tableau de char*).

pour récupérer un de ses pointeurs, il suffit de déclarer une variable de type pointeur sur char* et d'y affecter une entrée

const char* const calibre[] = { "0,25/23", "0,33/22", "0,50/20", "0,75/18", "1/17" , "1,5/15", "2/14" }; // grosseur de fil
const byte nbCalibres = sizeof(calibre) / sizeof(calibre[0]);

int Longueur = 0;
char strLongueur[5] = "0";

int Quantite = 0;
char strQuantite[5] = "0";

void setup()
{
  const char* ptrCalibre = NULL;
  Serial.begin(115200);

  for (byte i = 0; i < nbCalibres; i++) {
    ptrCalibre = calibre[i]; // affectation dans un pointeur
    Serial.println(ptrCalibre); // ou directement     Serial.println(calibre[i]);
  }

  Serial.println(F("------------------"));

  const char* menu_values[] = { strLongueur , calibre[2], strQuantite};
  for (byte i = 0; i < 3; i++) {
    Serial.println(menu_values[i]);
  }
}

void loop() {}

ça aide?

Merci pour votre aide, j'essaie ça dès demain matin, et je vous dirai !

Bonjour, oui, ça aide bien, et ça marche nickel !
J'aurais mis un temps pas possible pour faire ça tout seul !
Merci à tous les deux.

PS je suppose qu'il faudrait marquer sujet résolu, mais j'a pas trouvé comment on fait.

Rouvrir le premier message en édition et modifier le titre