Skip to content

Instantly share code, notes, and snippets.

@ypelletier
Last active December 8, 2018 12:29
Robot à base de moteurs pas à pas (sans capteur)
/*********************************************************
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