#include <Stepper.h>
#include <Button.h>
const int motor1Step = 6; // Broche STEP du driver-moteur 1
const int motor1Dir = 7; // Broche DIR du driver-moteur 1
const int motor2Step = 3; // Broche STEP du driver-moteur 2
const int motor2Dir = 4; // Broche DIR du driver-moteur 2
const int buttonPin = 2; // Broche pour le bouton
const int led1Pin = 12; // Broche pour la LED 1 (rouge)
const int led2Pin = 13; // Broche pour la LED 2 (verte)
// Déclaration de la classe Stepper pour les moteurs pas à pas
Stepper motor1(200, motor1Step, motor1Dir);
Stepper motor2(200, motor2Step, motor2Dir);
Button button(buttonPin);
bool led1State = false; // État de la LED 1 (rouge)
bool motor2Running = false; // État du moteur 2
void setup() {
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
motor1.setSpeed(50); // Réduit la vitesse du moteur 1
motor2.setSpeed(10); // Réduit la vitesse du moteur 2
}
void loop() {
if (button.read() == HIGH) {
// Rotation du moteur 1 dans le sens horaire de 18 degrés
motor1.step(10); // 200 pas correspondent à 360 degrés
delay(1000); // Attente d'une seconde
// Rotation du moteur 2 dans le sens horaire de 60 degrés
motor2.step(200); // 400 pas correspondent à 360 degrés pour un 1/4 de pas
motor2Running = true; // Mettre à jour l'état du moteur 2
delay(1000); // Attente d'une seconde
// Rotation du moteur 2 dans le sens anti-horaire de 60 degrés
motor2.step(-200); // Sens anti-horaire avec un déplacement négatif
motor2Running = false; // Mettre à jour l'état du moteur 2
delay(1000); // Attente d'une seconde
// Allumer la LED 1 (rouge)
digitalWrite(led1Pin, HIGH);
led1State = true; // Mettre à jour l'état de la LED 1
// Attente jusqu'à ce que le bouton soit relâché
while (button.read() == HIGH) {
// Attendre sans rien faire
}
}
// Éteindre la LED 1 (rouge) si le bouton est relâché et le moteur 2 a fini sa rotation
if (!button.read() && !motor2Running) {
digitalWrite(led1Pin, LOW);
led1State = false; // Mettre à jour l'état de la LED 1
}
// Rallumer la LED 1 (rouge) à la fin de l'opération du moteur 2
digitalWrite(led1Pin, led1State ? HIGH : LOW);
}