#include <ESP32Servo.h>
#include <AccelStepper.h>
#define SERV1 17
#define SERV2 16
#define STEP 33
#define DIR 32
String data = "";
String objet = "";
int posToGo = 2000;
long timeDetect = 0 ;
long currentTime = 0 ;
Servo Servo1;
Servo Servo2;
AccelStepper monMoteur(AccelStepper::DRIVER, STEP, DIR);
void setup() {
Serial.begin(115200);
monMoteur.setMaxSpeed(400);
monMoteur.setAcceleration(1000);
monMoteur.setSpeed(200);
monMoteur.moveTo(200);
Servo1.attach(SERV1);
Servo2.attach(SERV2);
}
void loop() {
//On attend qu'une commande arrive dans de port serie
if(Serial.available()){
data = Serial.readStringUntil('.');
}
//Si la donnée recu est rien alors le servo est placé à 0 et 180;
if(data == "rien"){
objet = "aucun";
Servo1.write(0);
Servo2.write(180);
}
else if(data == "poulet"){ //Sinon, si c'est poulet
objet = "poulet"; //alors on definit la varaible objet à poulet
timeDetect = millis(); //on lance le chronomètre
Serial.println("ouvert");
Servo1.write(45); //On bouge les servos
Servo2.write(180);
}
currentTime = millis(); //À chaque cycle du microcontrolleur on copie la valeur de millis()
if(objet == "poulet" && currentTime >= timeDetect + 3000){ //si l'objet est poulet et que le chronomètre
Serial.println("fermé");
Servo1.write(0);
Servo2.write(180);
objet = "";
}
monMoteur.runSpeed();
}