problème sur une boucle for

bonjour,

j ai un soucis dans une boucle for :

case 3:
{
  if (caliborp>0)
  {
    for (int i = 0; i <= 1; i + +) {
        Serial2.print("+");
        Serial2.print(13,BYTE);
      }
  LCD.rectangle(49, 125, 320, 200, 0x0000); 
  LCD.gText(100, 170, 0xFFCC, "Calibration effectuee");
  }
  
  if (caliborp<0)
  {
    caliborp=(caliborp*-1);
    for ((int i = 0); (i <= caliborp); (i + +))
      {
        Serial2.print("+");
        Serial2.print(13,BYTE);
      }
  LCD.rectangle(49, 125, 320, 200, 0x0000); 
  LCD.gText(100, 170, 0xFFCC, "Calibration effectuee");
  }
break;
}

il se bloque sur le premier for

je ne vois d ou vient l erreur

Bonjour,

Au niveau de la syntax pure et dure :

for (int i = 0; i <= 1; i + +)

i + + c'est pas jolie i++ c'est tout de suite beaucoup mieux :wink:

for ((int i = 0); (i <= caliborp); (i + +))

c'est pas jolie toute ces parenthèses inutile !

for (int i = 0;  i <= caliborp; i++)
caliborp=(caliborp*-1);

cela peut être raccourci en :

caliborp *= -1;

c'est plus facile à lire par la suite.

Ce genre de chose est à éviter :

Serial2.print(13,BYTE);

depuis arduino 0018 il est conseillé de faire :

Serial2.write(13);

à la fois pour gagner en ram mais aussi pour éviter les calculs inutile.

Par rapport à ta premier boucle elle ne semble pourtant pas fausse c'est bizarre ...

for(int i = 0; i <= 1; i++)

i = 0, (i <= 1) = true, i++
i = 1, (i <= 1) = true, i++
i = 2, (i <= 1) = false, break

Quand à ta seconde boucle :

for (int i = 0; i <= caliborp; i++)

Avec le if(caliborp<0) tu t'assure que caliborp est négatif et différent de 0, par conséquent quand tu fait caliborp *= -1 tu te retrouve avec une valeur positive au minimum égale à 1 ...

Je ne vois pas d'erreur tu est sur que c'est bien une de ces deux boucles qui plante ?

i + + c'est pas jolie i++ c'est tout de suite beaucoup mieux smiley-wink

j ai recopié bêtement le code sur le site arduino.cc avec l exemple instruction for :wink:

oui bien là, je suis passé par while et pas le problème

les parenthèses en trop, c'était des tests par rapport aux messages d'erreur :wink:

Stef84:
j ai recopié bêtement le code sur le site arduino.cc avec l exemple instruction for :wink:

Tu peut me donner le lien que j'aille éditer cette infamie (ou à défaut que j'aille sonner les cloches de la team arduino) :grin:

Stef84:
oui bien là, je suis passé par while et pas le problème
les parenthèses en trop, c'était des tests par rapport aux messages d'erreur :wink:

Je sais pas pourquoi mais je sens que le truc et tout con, juste suffisamment pour passer inaperçu ...
Tu avait des erreurs par rapports au éléments du for ? Pas nette tout ça il y a quelque chose de louche !

j avais un byte i; qui était plus haut je pense que le int i; plus bas devait merder :blush:
il me semble que c était sur cette page :

http://www.arduino.cc/en/Reference/For mais ca y est plus :smiley: