Bonjour, je voudrais faire avancer et reculer un moteur grâce à arduino.
Mais il ne fait que avancer... je suis vraiment débutante en programmation
Voici ce que j'ai mis dans mon code :
#include "Stepper.h"
const int stepsPerRevolution = 200;
unsigned long lastTime3 = 0;
unsigned long thisTime = 0
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
myStepper.setSpeed(60);
}
void loop() {
thisTime = millis(); // qu'elle heure est-il?
if((thisTime - lastTime3) < 3000){
myStepper.step(200); // nombre de pas
delay(2000);
}
else{
myStepper.step(-300); // nombre de pas
delay(2000);
lastTime3 = thisTime;
}
}
#include "Stepper.h"
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
myStepper.setSpeed(60);
}
void loop() {
myStepper.step(200); // nombre de pas
delay(3000);
myStepper.step(-200); // nombre de pas
delay(3000);
}
Le moteur tourne dans l'autre sens... mais toujours que dans un sens...
Donc mon moteur à bien la possibilité de tourner dans les 2 sens...
Merci de votre aide
ahhhh ça progresse merci
alors 8,10,9,11 ça ne faisait rien de plus donc j'ai essayé 8,11,9,10
mais par contre je vais 2 fois à gauche et après toujours à droite...
comment je peux faire pour aller à gauche un certain temps puis à droite un certain temps ?
Voici mon code modifier :
#include "Stepper.h"
const int stepsPerRevolution = 200;
unsigned long lastTime3 = 0;
unsigned long thisTime = 0;
Stepper myStepper(stepsPerRevolution, 8, 11, 9, 10);
void setup() {
myStepper.setSpeed(60);
}
void loop() {
thisTime = millis(); // qu'elle heure est-il?
if((thisTime - lastTime3) < 3000){
myStepper.step(200); // nombre de pas
delay(2000);
}
else{
myStepper.step(-300); // nombre de pas
delay(2000);
lastTime3 = thisTime;
}
}
J'en pense que tu nous disais en quelle classe tu es, nous gagnerons du temps.
J'en pense que le programme est une recopie d'un programme trouvé sur la toile.
Donnes nous le lien vers l'article où tu as trouvé ce programme.
Quel organe de puissance (certains parlent de driver) utilises-tu pour commander les bobinages du moteur ? Un ULNxyz ? Si oui lequel ?
Dans la bibliothèque stepper fournie avec l'IDE Arduino il y a un répertoire nommé "Examples".
Les programmes sont garantis fonctionnels, fais un exemple très simple, il doit fonctionner.
S'il ne fonctionne pas c'est probablement du a une erreur de câblage, beaucoup plus rarement à un composant détruit. Mais là comme le moteur tourne dans un sens il n'y a pas de composant détruit.
Il est préférable de remonter aux sources plutôt que de jouer aux devinettes en permutant les fils au hasard.
Attention (je deviens prudent) ce n'est pas une critique de la réponse de villeroi, simplement si la solution proposée ne fonctionne pas, c'est que probablement, il y a d'autres erreurs.
Pour un montage aussi simple, AMHA, le plus simple est de reprendre les bases et refaire un câblage "maitrisé".
ok ok merci pour cet intérêt... alors non les études sont loin derrière moi et ce n'est pas un projet étudiant... c'est juste une envie de découvrir arduino...
donc comme je l'ai expliqué un peu plus haut je me suis servi de ce tuto (chose que je n'ai pas voulu cacher): https://arduino-france.site/moteur-pas-a-pas/
j'ai le même matériel et j'avais utiliser le même code...
sauf que comme expliqué.... mon moteur ne tourne que dans un sens...
Malgré mon peu de connaissance dans les circuits et dans la programmation j'ai essayé de trouver une solution en ajoutant une variable de temps mais rien n'a changé....
donc me voici bien déterminé à trouver une solution à mon problème...et je me suis dit que la communauté pourrait m'aider !!!!
Alors la réponse de Villeroi permet de faire avancer le problème...
Une simple réponse de votre part m'expliquant qu'il s'agissait plutôt d'une erreur de câblage plutôt que de me prendre de haut aurait surement été plus adapté je pense...
sur ce merci de votre intervention... et n'hésitez pas si vous avez des réponses plus constructive !!!!
@bibimoi Je pense que malheureusement la prochaine fois, il gardera ses conseilles avisés pour lui et te laissera chercher une solution constructive toutes seules
Je me présente : retraité après 40 ans d'électronique professionnelle en développement.
J'ai donc une certaine expérience et j'ai pu constater que les erreurs les plus bêtes arrivent à tout le monde, même aux plus forts, et sont souvent les plus difficiles à trouver parce qu'on n'imagine pas qu'on ait pu les faire.
Donc ce n'était de la condescendance, mais des conseils avisés basés sur une longue expérience.
Dans ma longue carrière de développeur j'ai pu constater que tous ceux qui refusent l'idée qu'ils puissent faire des erreurs ne font pas de vieux os en développement : le doute est une qualité dans ce métier.
Effectivement, je vais en resté là, vous mettre en mode sourdine, et je vous souhaite, très sincèrement, de réussir dans votre projet.
PS : petit rappel, les exemples fournis avec les bibliothèques fonctionnent tous, ils n'ont pas de bug.
Tu as maintenant un petit souci d'organisation, j'ai corrigé ton programme en conséquence. Il est possible que les sens CW (sens des aiguilles d'une montre) et CCW soient inversés.
Je te laisses jouer au jeux des 7 différences pour découvrir les modifications .
Il y a des indications quand au fonctionnement, dans la console à 115200.
Le programme modifié:
#include "Stepper.h"
const int stepsPerRevolution = 200;
//unsigned long lastTime3 = 0;
//unsigned long thisTime = 0;
unsigned long timerTempo = 3000; // Rythme avant/arrière
unsigned long timerMilli = millis(); // Rythme chrono
const int stepperMove = 1 * stepsPerRevolution; // Nombre de pas
boolean stepperSensCW = true; // Sens des aiguilles d'une montre
Stepper myStepper(stepsPerRevolution, 8, 11, 9, 10);
void setup() {
Serial.begin(115200);
myStepper.setSpeed(60);
//myStepper.step(stepperMove);
}
void loop() {
if (millis() - timerMilli >= timerTempo)
{
if (stepperSensCW == true) // Si sens des aiguilles d'une montre
{
Serial.println("CCW");
myStepper.step(-stepperMove); // nombre de pas
stepperSensCW = false; // Inverser le sens
}
else
{
Serial.println("CW");
stepperSensCW = stepperSensCW;
myStepper.step(stepperMove); // nombre de pas
stepperSensCW = true; // Inverser le sens
}
timerMilli = millis(); // On recharge le chrono
}
}
Si tu t'en passe, il ne faut pas hésiter à aller jusqu'au bout de ton raisonnement et ne pas suivre ses conseilles qui t'on permis de résoudre ton problème.
Tu parle de compréhension, mais as tu essayé de comprendre sa réaction et ta réponse est-elle un exemple de compréhension?
Après on est surement tous d'accord, qu'il n'y a jamais excès de compréhension ou de tolérance