Entier capricieux qui refuse d'être incrémenté

Bonjour à tous,

Je ne comprends plus rien. Ma variable “test” n’est incrémentée qu’une seule fois (comme si l’instruction se trouvait dans la fonction setup), alors qu’elle se situe bien dans la fonction loop.

L’arduino en question est peut-être en cause (hardware), c’est pourquoi je m’en remets à vous.

Merci bien,
Cordialement

L'image:

Bonjour

manque {} pour delimiter le if

donc remise a zero a chaque fois pour l'instant !
tout mettre sur une ligne ca marche pas

Salut ,
ton code est bon , pas d’ erreur et il fait ce que tu lui demandes :

a chaque tour de boucle , il initialise une variable test a 0 et l’ incremente de 1 et ainsi de suite .

forcement ca ne passera jamais a 2 .

suffit de deplacer l ’ initialisation a 0 de la variable test dans le setup .

@jfs59 il est tout a fait possible de placer plusieurs types d’ instructions sans accolade , cela marche tres bien :

if (commandeWeb.active && commandeWeb.volet == NULL && commandeWeb.arrosage == NULL && commandeWeb.actionCMD_A == NULL_A) if(commandeWeb.actionCMD_V == FERMER_TOUT) for (uint8_t v = 0; v < NOMBREDEVOLETS; v++) fermerUnVolet(&(lesVolets[v]));

iznobe:
@jfs59 il est tout a fait possible de placer plusieurs types d' instructions sans accolade , cela marche tres bien :

Le problème n'est pas que les instructions soient ou non sur la même ligne, en C/C++ ça n'a pas d'importance.
Ce que note jfs59 c'est que s'il n'y a pas d'accolade seule la première instruction sera conditionnée par le if, la deuxième sera toujours exécutée.
Conculsion: il faut des accolades entourant les deux instructions (qu'elles soient sur la même ligne ou pas).

ok , tout depend du resultat escompté , il est evident que sans accolade une seule instruction ( delimité par un ";" ) est executé a la suite d' un if .

donc , pour incrementé test , il y a 2 solutions en fonction de ce que desire faire le demandeur , si il veut remettre a 0 la variable test arrivé a 100 , il faut mettre des accolades , sinon , il faut deplacer " test = 0; " dans le setup .

mais bon difficile de deviner les intentions de chaque personne qui demande de l aide , surtout que le code n ' est pas complet , on ne peut donc pas savoir si la variable test a deja eté initialisée ou pas avant .

j ' avais l ' impression que ce que voulais dire jfs59 , c ' etait que sans les accolades , ca ne pouvait pas marcher .

Desolé j ' ai mal interpreté , d ' ou ma precision .

Je pense que son raisonnement était de croire que mettre les deux instructions sur la même ligne du if était suffisant pour appartenir au if
ce n est pas le cas il faut donc mettre les accolades

En regardant son code il est évident qu il veux remettre à zéro à 100

Et pour avoir un code sur j aurais mis >99 pour éviter les aléas

Et si on pousse plus loin int test =0 met déjà la variable à
zéro au début

Après les deux test... Bahhh mais c était pas la question

Merci pour vos explications, par soucis de clarification du code j'utilise souvent des instructions sur la même ligne que la condition lorsqu'il n'y en a qu'une, mais par habitude j'ai fini par faire cette erreur. En effet c'est logique.

A la base je ne testais pas la variable avant de l'incrémenter mais voyant que rien ne se produisait j'ai modifié mon code en ce sens

Cordialement