#include <ESP32Servo.h>
#include <AccelStepper.h>
#define BROCHE_SERVOPORTE 17
#define BROCHE_SERVOTRIEUR 18
#define STEP 27
#define DIR 26
int anglePorteOuverte = 110;
int anglePorteFermee = 140;
long temps = 0;
Servo servoPorte;
Servo servoTrieur;
AccelStepper monMoteur(AccelStepper::DRIVER, STEP, DIR);
void setup() {
Serial.begin(115200);
// Setup du servo #1 (Porte) et #2 (Trieur)
servoPorte.attach(BROCHE_SERVOPORTE);
servoTrieur.attach(BROCHE_SERVOTRIEUR);
// Setup du stepper
monMoteur.setMaxSpeed(200);
monMoteur.setAcceleration(200);
monMoteur.setSpeed(200);
// Position initiale porte
servoPorte.write(anglePorteFermee);
}
void loop() {
long currentTime = millis();
// faire tourner moteur en continue
monMoteur.runSpeed();
// ouverture et fermeture de la porte par la position du servo moteur
if (currentTime == temps + 3000){
servoPorte.write(anglePorteOuverte); //ouverte
}
else if (currentTime == temps + 5000){
servoPorte.write(anglePorteFermee); //fermée
temps = millis();
}
// tourner servo qui trie les pièces selon leur forme
if(Serial.available()){
String data = Serial.readStringUntil('.');
if (data == "Étoile") {
servoTrieur.write(90);
}
else if (data == "Cercle") {
servoTrieur.write(180);
}
else if (data == "Fond") {
servoTrieur.write(0);
}
}
}