#include <Wire.h>
#include <MPU6050.h>
#include <ESP32Servo.h>

MPU6050 mpu;

int16_t ax, ay, az;
float totalAccel = 0.0;
float accelThreshold = 15000;  // Seuil de détection

Servo servo; // Servo principal
Servo frein; // Servo de frein
bool mouvementDetecte = false;

void setup() {  //initialisation et séquence de démarage du moteur 
  Serial.begin(115200);
  delay(1000);

  Wire.begin();
  mpu.initialize();
  if (!mpu.testConnection()) {
    Serial.println("MPU6050 non détecté !");
    while (1);
  }

  servo.attach(10);
  frein.attach(9);
  frein.write(0);

  Serial.println("Initialisation terminée");
}

void loop() {
  mpu.getAcceleration(&ax, &ay, &az);  // on accéde aux accélérations
  totalAccel = sqrt(ax * ax + ay * ay + az * az); // on calcule l'accélération

  Serial.print("Total Accel: ");
  Serial.println(totalAccel);  //affichage de l'accélérarion

  if (totalAccel > accelThreshold) {   // on regarde si la structure a bougé pour commencer le procésus
    Serial.println("MOUVEMENT DÉTECTÉ !");
    mouvementDetecte = true;
  }

  if (mouvementDetecte) {
    servo.write(70); // on commence la rotation du moteur 
    delay(5000);
    servo.write(0);  //on arrete le moteur et on action le fein juste après
    delay(3000);

    frein.write(180); //activation du frein
    delay(10000);
    frein.write(0);  //on remets le frein en position initiale

    mouvementDetecte = false;
  }

  delay(200);
}
