#include <Stepper.h>
Stepper moteur(48, 2, 3, 4, 5);
int laser=13;
int A = 2;
int B = 3;
int C = 4;
int D = 5;
void setup() {
moteur.setSpeed(55);
pinMode (laser, OUTPUT);
}
void loop ()
{
for (int f = 1; f < 9; f++)
{
digitalWrite(laser, HIGH);
moteur.step(1);
digitalWrite(laser, LOW);
delay(5);
}
for (int f = 7; f > 0; f--)// 7 et non 8 car le 8 est fait pas la boucle "for" montante
{
digitalWrite(laser, HIGH);
moteur.step(-1);
digitalWrite(laser, LOW);
delay(5);
}
}
J'aimerai donc que mon moteur fasse 8 pas dans un sens puis 8 pas dans le sens contraire. Ce qu'une personne de ce forum m'a aidé à faire. Seulement lorsque j'envoi le programme, le moteur fait bien 8 pas dans le sens horaire puis antihoraire, seulement il fait également des tours complets, des rotations complètes. Or ce n'est pas ce que je veux. Quelqu'un saurait ou se situe le problème ?
J'ai l'impression qu'à chaque tour de boucle il y a un décalage de 1 pas par rapport à la boucle précédente. Ce qui entraîne à terme une rotation complète. Or je ne recherche pas une rotation complète mais seulement l'équivalent en degré de 7 pas.
Bonjour,
Bien sur qu'il y a un décalage de 1 pas, c'est ce que tu demandes de faire à ton programme.
Dans le premier for, tu balayes avec ta variable f les valeurs 1, 2, 3, 4, 5, 6, 7 et 8 soit 8 pas
Dans le second for, tu balayes avec ta variable f les valeurs 7, 6, 5, 4, 3, 2 et 1 soit 7 pas
Tu remplaces
for (int f = 7; f > 0; f--)// 7 et non 8 car le 8 est fait pas la boucle "for" montante
#include <Stepper.h>
Stepper moteur(48, 2, 3, 4, 5);
int laser=13;
int A = 2;
int B = 3;
int C = 4;
int D = 5;
void setup() {
moteur.setSpeed(155);
pinMode (laser, OUTPUT);
}
void loop ()
{
for (int f = 1; f < 9; f++)
{
digitalWrite(laser, HIGH);
moteur.step(1);
digitalWrite(laser, LOW);
delay(5);
}
for (int f = 1; f < 9; f++)
{
digitalWrite(laser, HIGH);
moteur.step(-1);
digitalWrite(laser, LOW);
delay(5);
}
}
Cependant je ne le comprend pas, pourrais-tu le commenter point par point stp ? Ce serait gentil
#include <Stepper.h>
Stepper moteur(48, 2, 3, 4, 5);
int laser=13;
//int A = 2; //ne sert à rien car pas utilisé
//int B = 3; //ne sert à rien car pas utilisé
//int C = 4; //ne sert à rien car pas utilisé
//int D = 5; //ne sert à rien car pas utilisé
void setup() {
moteur.setSpeed(155);
pinMode (laser, OUTPUT);
}
void loop () {
//point départ
/* Pour chaque valeur de f (1<=f<=8) tu parcours le code entre {} cad
sortie laser = HIGH, puis 1 pas sur le PAP, puis sortie laser = LOW, puis attente 5 ms
*/
for (int f = 1; f < 9; f++)
{
digitalWrite(laser, HIGH);
moteur.step(1);
digitalWrite(laser, LOW);
delay(5);
}
/* Pour chaque valeur de f (1<=f<=8) tu parcours le code entre {} cad
sortie laser = HIGH, puis -1 pas sur le PAP, puis sortie laser = LOW, puis attente 5 ms
*/
for (int f = 1; f < 9; f++)
{
digitalWrite(laser, HIGH);
moteur.step(-1);
digitalWrite(laser, LOW);
delay(5);
}
/*A partir de là, on recommence cad point départ
*/ }
Oui mais dans la première boucle le compteur se retrouve à 8 et donc logiquement la deuxième boucle (f=9 et non pas f=1) ne devrait s'initialiser ou bien ?
Lucasppe:
Oui mais dans la première boucle le compteur se retrouve à 8 et donc logiquement la deuxième boucle (f=9 et non pas f=1) ne devrait s'initialiser ou bien ?
Oui pardon pour le double post mais je ne retrouvais plus du tout mon premier post jusqu'à hier soir, et j'avais besoin d'aide très vite. Désolé et merci à vous deux