Bonjour,
Je suis sur un projet qui consiste à remplacer un boiier electronique ou on marquait le nombre de tours qu'on voulait qu le moteur fasse et ca coupait le moteur au bon moment.
J'ai presque tout terminé mais j'ai juste un petit problème pour la valeur max qu'on peut saisir ; je m'en explique :
En fait j'ai 2 tableaux :
1 qui stocke des valeurs (en autre le nombre de tours voulus)
l'autre qui stocke la taille max de la valeur pour chaque valeur du tableau
const int NbrItemsMenu = 3;
const char* ItemMenu[NbrItemsMenu] = {"RPM", "PWM", "Mode auto"};
const char* TailleMaxValeur[NbrItemsMenu] = {"800", "100", "2"}; //valeur max pour les valeurs ValeurItemMenu
int ValeurItemMenu[NbrItemsMenu] = {16, 88, 1};
Je me suis fait un menu controlé avec un codeur rotatif tout fonctionne mais en fait j'arrive quand meme à incrémenter ma valeur malgré ma condition if qui dit qu'on incrémente la valeur uniquement si elle est inférieur à la valeur max stockée dans le second tableau :
toto = TailleMaxValeur[NumMenuTbx];
if ( ValeurItemMenu[NumMenuTbx] < TailleMaxValeur[NumMenuTbx] ) {
if (Debug = 1) {
Serial.println("dans le if");
Serial.print("TailleMaxValeur[NumMenuTbx]");
Serial.println(TailleMaxValeur[NumMenuTbx]);
}
ValeurItemMenu[NumMenuTbx] = ValeurItemMenu[NumMenuTbx] + 1;
}
J'ai fait des println pour essayer de trouver le probméme mais sans succés.
Concrètement j'arrive à incrémenter ma valeur ValeurItemMenu malgré qu'elle soit égale ou dépasse ma valeur ValeurItemMenuMax.
Avec les println je vois bien que ValeurItemMenuMax est bonne , par contre si je remplace physiquement dans mon if ValeurItemMenuMax par 20 là ça fonctionne bien, je ne peux pas aller au delà de 20.
Aprés avoir tourné mon codeur rotatif la console me renvoie :
ValeurItemMenu = 4 car j'ai réussi à l'incrémenter malgré ma condition
dans le if
TailleMaxValeur[NumMenuTbx]: 3
toto : 447
ValeurItemMenu[NumMenuTbx]4
TailleMaxValeur[NumMenuTbx]3
Quant à la valeur toto, ça me donne un chiffre qui ne sort de je ne sais ou (c'était juste pour le debug)
Si j'essaie le code suivant :
toto = TailleMaxValeur[NumMenuTbx];
Serial.print("toto: ");
Serial.println(toto);
if ( ValeurItemMenu[NumMenuTbx] < toto) {
if (Debug = 1) {
Serial.println("dans le if");
Serial.print("TailleMaxValeur[NumMenuTbx]: ");
Serial.println(TailleMaxValeur[NumMenuTbx]);
}
ValeurItemMenu[NumMenuTbx] = ValeurItemMenu[NumMenuTbx] + 1;
}
ca me renvoi :
ModeReglage :1
Rotary position toto: 447
dans le if
TailleMaxValeur[NumMenuTbx]3
toto : 447
ValeurItemMenu[NumMenuTbx]2
TailleMaxValeur[NumMenuTbx]3
Je peux joindre le code complet mais il y a beaucoup de lignes pour juste ce petit 'bug"
j'ai une carte arduino nano et la version de l'ide est 1.8.13 sous linux
Merci d'avance ^^