Last active
December 8, 2018 12:29
Robot à base de moteurs pas à pas (sans capteur)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/********************************************************* | |
Robot à base de moteurs pas à pas | |
Le premier moteur est relié aux pins 4-5-6-7 | |
Le deuxième moteur est relié aux pins 8-9-10-11 | |
Le robot avance en ligne droite pendant 3 secondes, | |
tourne sur lui-même pendant 3 secondes, puis recule | |
en ligne droite pendant 3 secondes. | |
Pour plus de détails: | |
http://electroniqueamateur.blogspot.com/2017/11/robot-base-de-moteurs-pas-pas-arduino.html | |
**********************************************************/ | |
#include <Stepper.h> | |
const int stepsPerRevolution = 200; | |
int vitesse1 = 95; | |
int vitesse2 = 95; | |
Stepper myStepper1(stepsPerRevolution, 4, 5, 6, 7); | |
Stepper myStepper2(stepsPerRevolution, 8, 9, 10, 11); | |
unsigned long lastTime1 = 0; | |
unsigned long lastTime2 = 0; | |
unsigned long lastTime3 = 0; | |
unsigned long thisTime = 0; | |
void setup() { | |
} | |
void loop() { | |
thisTime = millis(); // qu'elle heure est-il? | |
if ((thisTime - lastTime3) < 3000) { | |
vitesse1 = 95; // marche avant | |
vitesse2 = 95; | |
} | |
else { | |
if ((thisTime - lastTime3) < 6000) { | |
vitesse1 = 95; // tourne | |
vitesse2 = -95; | |
} | |
else { | |
if ((thisTime - lastTime3) < 9000) { | |
vitesse1 = -95; // recule | |
vitesse2 = -95; | |
} | |
else { | |
if ((thisTime - lastTime3) < 12000) { | |
lastTime3 = thisTime; | |
} | |
} | |
} | |
} | |
if (abs(vitesse1) > 0) { | |
// si un temps raisonnable s'est écoulé depuis | |
// la dernière rotation du moteur | |
if ((thisTime - lastTime1) > abs(abs(vitesse1) - 100)) { | |
if (vitesse1 > 0) { | |
myStepper1.step(1); // un step en sens horaire | |
} | |
else { | |
myStepper1.step(-1); // un step en sans antihoraire | |
} | |
lastTime1 = thisTime; // archivage du moment de la dernière rotation | |
} | |
} | |
if (abs(vitesse2) > 0) { | |
// si un temps raisonnable s'est écoulé depuis | |
// la dernière rotation du moteur | |
if ((thisTime - lastTime2) > abs(abs(vitesse2) - 100)) { | |
if (vitesse2 > 0) { | |
myStepper2.step(1); // un step en sens horaire | |
} | |
else { | |
myStepper2.step(-1); // un step en sans antihoraire | |
} | |
lastTime2 = thisTime; // archivage du moment de la dernière rotation | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment