Commande moteur pas à pas sur boucle

Bonjour,

j'essaie décrire un programme pour faire tourner un moteur pas à pas de 10 tours dans un sens puis 10 tours dans l'autre mais j'ai des erreurs à la compilation :slight_smile:
pouvez vous me dire ce qui cloche ?

void setup() {
  pinMode(3, OUTPUT); // Déclaration de la broche n°3 en sortie Digitale PWM
  pinMode(11, OUTPUT); // Déclaration de la broche n°11 en sortie Digitale PWM
  pinMode(12, OUTPUT); // Déclaration de la broche n°12 en sortie Digitale
  pinMode(13, OUTPUT); // Déclaration de la broche n°13 en sortie Digitale

#define conteur;// on initialise le conteur
  byte counteur=0;
  //conteur = 0;
  Serial.begin(115200);
}

void loop(){
 
  
// Commande moteur pas à pas Bipolaire 4 fils en Mode Wave | Sens Normal
// Pas n°1 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas

digitalWrite(12, HIGH);
digitalWrite(13, LOW);  
analogWrite(3, 0);
analogWrite(11, 255);
delay(100);
  
// Pas n°2 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);   
analogWrite(3, 255);
analogWrite(11, 0);
delay(100); 

// Pas n°3 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);  
analogWrite(3, 0);
analogWrite(11, 255);
delay(100); 

// Pas n°4 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
digitalWrite(12, HIGH);
digitalWrite(13, LOW);   
analogWrite(3, 255);
analogWrite(11, 0);
delay(100); 

Serial.println(conteur);
  // on attend une demi-seconde pour que l'arrêt soit visible
  delay(500);
  // on incrémente le conteur
  conteur++;
  
    


// Commande moteur pas à pas Bipolaire 4 fils en Mode Wave | Sens inverse
// Pas n°1 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);  
analogWrite(3, 255);
analogWrite(11, 0);
delay(100);
  
// Pas n°2 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
digitalWrite(12, HIGH);
digitalWrite(13, LOW);   
analogWrite(3, 0);
analogWrite(11, 255);
delay(100); 

// Pas n°3 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
digitalWrite(12, HIGH);
digitalWrite(13, LOW);  
analogWrite(3, 255);
analogWrite(11, 0);
delay(100); 

// Pas n°4 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);   
analogWrite(3, 0);
analogWrite(11, 255);
delay(100); 
// si le conteur est à 10 (de 0 à  10), alors...
  if (conteur > 10) {
    Serial.println("Le conteur est à 10 > Arrêt du programme !");
while (true) { ; // ...on arrête le programme
}
}

On ne demande qu'à te croire. Mais montre (enfin plutôt copie) nous les messages d'erreurs.

Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.

Celui ci n'a pas lieu d'être

va définir une variable LOCALE à setup nommée compteur

Raconte pas d'histoire (ou plutôt de conte), il y a une différence entre compteur et conteur

Et même si il s'écrivait compteur, il ne serait pas défini car l'autre est local à setup et pas global.

Bonjour,
merci pour tes informations, j'ai modifié mon programme mais il me reste une erreur :slight_smile:
/var/folders/fs/6mzzgl_s1l7d1855f45ywb500000gn/T//ccLkIH1f.ltrans0.ltrans.o: In function main':* */Users/philippe/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/main.cpp:43: undefined reference to setup'
collect2: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1

void Setup(){
// déclaration variable du compteur
int compteur= 1;
  pinMode(3, OUTPUT); // Déclaration de la broche n°3 en sortie Digitale PWM
  pinMode(11, OUTPUT); // Déclaration de la broche n°11 en sortie Digitale PWM
  pinMode(12, OUTPUT); // Déclaration de la broche n°12 en sortie Digitale
  pinMode(13, OUTPUT); // Déclaration de la broche n°13 en sortie Digitale
  Serial.begin(115200);
}

void loop(){
for ( int compteur = 1; compteur <10; compteur ++) {

{
// Commande moteur pas à pas Bipolaire 4 fils en Mode Wave | Sens Normal
// Pas n°1 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas

digitalWrite(12, HIGH);
digitalWrite(13, LOW);  
analogWrite(3, 0);
analogWrite(11, 255);
delay(100);
  
// Pas n°2 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);   
analogWrite(3, 255);
analogWrite(11, 0);
delay(100); 

// Pas n°3 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);  
analogWrite(3, 0);
analogWrite(11, 255);
delay(100); 

// Pas n°4 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
digitalWrite(12, HIGH);
digitalWrite(13, LOW);   
analogWrite(3, 255);
analogWrite(11, 0);
delay(100); 

Serial.println(compteur);
 
  
    


// Commande moteur pas à pas Bipolaire 4 fils en Mode Wave | Sens inverse
// Pas n°1 | Sortie B- du Shield Moteur -> Bobine A du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);  
analogWrite(3, 255);
analogWrite(11, 0);
delay(100);
  
// Pas n°2 | Sortie A- du Shield Moteur -> Bobine C du moteur pas à pas
digitalWrite(12, HIGH);
digitalWrite(13, LOW);   
analogWrite(3, 0);
analogWrite(11, 255);
delay(100); 

// Pas n°3 | Sortie B+ du Shield Moteur -> Bobine B du moteur pas à pas
digitalWrite(12, HIGH);
digitalWrite(13, LOW);  
analogWrite(3, 255);
analogWrite(11, 0);
delay(100); 

// Pas n°4 | Sortie A+ du Shield Moteur -> Bobine D du moteur pas à pas
digitalWrite(12, LOW);
digitalWrite(13, HIGH);   
analogWrite(3, 0);
analogWrite(11, 255);
delay(100); 


}

if (compteur > 10){
       compteur  = 0;
       break; // sortie de la boucle
    }
    delay(50);
}
}

/var/folders/fs/6mzzgl_s1l7d1855f45ywb500000gn/T//ccLkIH1f.ltrans0.ltrans.o: In function main': /Users/philippe/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino/main.cpp:43: undefined reference to setup'
collect2: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1

Bonjour Phil_dum

C'est:
void setup(){

Cordialement
jpbbricole

Super, merci ça marche ! :grinning:

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