boucle do while

Bonjour
Voici mon programme:
// Inclut la bibliothèque AccelStepper:
#include <AccelStepper.h>
// Définissez les connexions du moteur pas à pas et le type d’interface moteur. Le type d’interface moteur doit être défini sur 1 lors de l’utilisation d’un pilote:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1

// Créez une nouvelle instance de la classe AccelStepper:
AccelStepper stepper = AccelStepper ( motorInterfaceType, stepPin, dirPin ) ;
int Compteur = 0;
void setup ( ) {
// Définissez la vitesse et l’accélération maximales:
stepper. setMaxSpeed ( 500 ) ;
stepper. setAcceleration ( 300 ) ;
Compteur=1;

}
void loop ( )
{
do
{
delay(30);
// Définissez la position cible:
stepper.moveTo ( 400 ) ;
// Courir jusqu’à la position cible avec une vitesse et une accélération / décélération définies:
int Compteur(+1);
delay ( 100 ) ;}
while
(Compteur<30);
delay (50);
stepper.runToPosition () ;
}

J’ai une carte arduino connectée à un TB 6600, qui pilote un 17.
Pour faire du stacking photo je veux me déplacer de 400 pas avec des boucles .
J’ai trouvé ce programme, qui marche pour aller de la position 0 à 400 pas sur 1600p/tr. J’ai ajouter une boucle do while , que j’avais essayée avec une librairie stepper h. mais qui se de synchronise aprés quelques cycles.
avec accelstepper le moteur ok, mais je n’arrive pas à activer la boucle. il faut que je fasse un reset après chaque cycle.
comment je peut obtenir comme dans l’exemple du programme 30 cycles.
il me restera à installer la commande de l’APN à chaque cycle (relais)
Merci de votre aide.

Première chose : lis les règles du forum (épinglées en haut des messages), tu y apprendras à bien présenter ton code (voir ci-dessous) avec les balises CODE

Ensuite, dans l’IDE, tu peux activer l’auto-indentation des lignes (CTRL T) ce qui donne une meilleure lisibilité à ton code.

Je l’ai un peu remanié (très peu), mais il est bien plus lisible (et posté entre balises):

#include <AccelStepper.h>
// Définissez les connexions du moteur pas à pas et le type d'interface moteur. Le type d'interface moteur doit être défini sur 1 lors de l'utilisation d'un pilote:
#define dirPin 2
#define stepPin 3
#define motorInterfaceType 1
// Créez une nouvelle instance de la classe AccelStepper:
AccelStepper stepper = AccelStepper ( motorInterfaceType, stepPin, dirPin ) ;
int Compteur = 0;

void setup () {
  // Définissez la vitesse et l'accélération maximales:
  stepper.setMaxSpeed ( 500 ) ;
  stepper.setAcceleration ( 300 ) ;
}

void loop () {
  do
  {
    delay (30);
    // Définissez la position cible:
    stepper.moveTo (400);
    // Courir jusqu'à la position cible avec une vitesse et une accélération / décélération définies:
    ++Compteur;
    delay (100) ;
  }
  while (Compteur < 30);
  delay (50);
  stepper.runToPosition ();
}

Je ne connais pas la bibliothèque AccelStepper, donc je ne peux faire que des suppositions.

La loop dans ton code fait ceci (en boucle) :

  • Définir la position cible (400)
  • Répéter ça 30 fois
  • Ensuite, aller à la position cible
    Je pense que ce n’est pas ce que tu veux faire.

Que veux-tu faire exactement ? Explique bien ce que tu veux faire, et pourquoi tu veux faire des boucles…