Pixel33
February 11, 2020, 1:22pm
1
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};
lesept
February 11, 2020, 1:32pm
2
je dirais (et pareil pour strQuantite)
char strLongueur[5] = {"0"};
Probable que char *calibre[] doit être char *strCalibre[]
J-M-L
February 11, 2020, 1:35pm
3
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?
Pixel33
February 11, 2020, 3:53pm
4
Merci pour votre aide, j'essaie ça dès demain matin, et je vous dirai !
Pixel33
February 12, 2020, 7:21am
5
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