#include <AccelStepper.h>
// Configuration du driver (type DRIVER pour un contrôleur de type TB6600)
AccelStepper stepper(AccelStepper::DRIVER, 2, 3); // PIN 2 pour STEP, PIN 3 pour DIR
// Paramètres de contrôle du moteur
float vitesse_tr_minute = 10; // Vitesse de rotation en tours par minute (tr/min)
int angle_horaire = 45; // Angle de rotation en sens horaire en degrés
int angle_antiHoraire = 45; // Angle de rotation en sens anti-horaire en degrés
int pasParTour = 200; // Nombre de pas par tour du moteur (200 pour un moteur 1.8° par pas)
// Calcul de la vitesse en pas par seconde
float vitesse_pas = (vitesse_tr_minute * pasParTour) / 60;
void setup() {
Serial.begin(9600); // Initialisation de la communication série
// Configuration du moteur
stepper.setMaxSpeed(vitesse_pas);
stepper.setAcceleration(100.0); // Ajustez l'accélération si nécessaire
Serial.println("Cycle de mouvement démarré.");
}
void loop() {
executerCycle();
}
// Fonction pour exécuter le cycle de mouvement
void executerCycle() {
int pas_horaire = (angle_horaire / 360.0) * pasParTour;
int pas_antiHoraire = (angle_antiHoraire / 360.0) * pasParTour;
Serial.print("Rotation horaire de ");
Serial.print(angle_horaire);
Serial.println(" degrés");
stepper.moveTo(pas_horaire);
while (stepper.distanceToGo() != 0) {
stepper.run();
float angle_actuel = (stepper.currentPosition() * 360.0) / pasParTour;
Serial.print("Angle actuel (horaire): ");
Serial.println(angle_actuel);
}
delay(100);
Serial.print("Rotation anti-horaire de ");
Serial.print(angle_antiHoraire);
Serial.println(" degrés");
stepper.moveTo(-pas_antiHoraire);
while (stepper.distanceToGo() != 0) {
stepper.run();
float angle_actuel = (stepper.currentPosition() * 360.0) / pasParTour;
Serial.print("Angle actuel (anti-horaire): ");
Serial.println(angle_actuel);
}
delay(100);
}