boucle for avec 2 conditions

Bonjour,
Je voudrais savoir s’il est possible de créer une boucle for qui prend 2 conditions.
J’ai vu que c’était possible avec les boucles if et l’opérateur &&.

Je commence avec les servomoteurs. J’ai essayé ceci :

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
Servo myservo2;

int pos = 90;    // variable to store the servo position
int pos2 = 90;

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  myservo2.attach(6);
}

void loop() {
  for (pos = 90; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees in steps of 1 degree
    for (pos2 = 90; pos2 <= 180; pos2 += 1) {
      myservo.write(pos);              // tell servo to go to position in variable 'pos'
      delay(50);                       // waits 15ms for the servo to reach the position
      myservo2.write(pos2);
      delay(50);
    }
  }
}

mais dans ce cas j’ai seulement myservo2 qui bouge et pas du tout myservo.
J’ai aussi essayé ca:

 for ((pos = 90; pos <= 180; pos += 1)&&(pos2=90; pos2<=180; pos2+=1)) {...
}

et :

 for ((pos = 90&&pos2=90; pos <= 180&&pos2<=180; pos += 1&&pos2+=1){...
}

mais le code ne compile pas.

Merci!

Le premier argument de for est exécuté à l’initialisation de la boucle
Le second argument est la condition de maintient dans la boucle et il est testé à chaque début de boucle. On reste dans la boucle si la condition est vrai.
Le troisième argument est exécuté à la fin de chaque boucle
Le premier et le troisième argument peuvent contenir plusieurs éléments séparés par des virgules

for(i = 0,  j = 25; i < 10; i++, j--){

Ce code initialise i et j en début de boucle et incrémente/décrémente les variables à chaque itération

Si tu veux avoir plusieurs conditions de sortie il faut faire une opération booléenne qui soit vrai pour rester dans la boucle

for(i = 0,  j = 25; (i < 10) && (j > 20); i++, j--){

Dans cette exemple, dès que l’une des conditions ne serait plus vrai la boucle s’arrêtera.

J’ai l’impression que c’est simplement:

void loop() {
  for (pos = 90; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees in steps of 1 degree
      myservo.write(pos);              // tell servo to go to position in variable 'pos'            
      myservo2.write(pos);
      delay(50); // waits 15ms for the servo to reach the position
  }
}

Il faut que tu précises ce que tu veux si ce n’est pas ça.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.