/*MPU6050 sensor with servo control.
https://srituhobby.com
*/

#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <Servo.h>
int ledPin = 13; // Définir le numéro de broche de la LED
Servo servo;
Adafruit_MPU6050 srituhobby;

void setup(void) {
Serial.begin(115200);
servo.attach(3);
Wire.begin();
srituhobby.begin();
servo.write(90);
pinMode(ledPin, OUTPUT); // Définir la broche de la LED en sortie
digitalWrite(ledPin, HIGH); // Allumer la LED
delay(4000); // Attendre quatre secondes (phase d'initialisation du vumètre)
digitalWrite(ledPin, LOW); // Éteindre la LED
srituhobby.setAccelerometerRange(MPU6050_RANGE_8_G); //2_G,4_G,8_G,16_G
srituhobby.setGyroRange(MPU6050_RANGE_500_DEG); //250,500,1000,2000
srituhobby.setFilterBandwidth(MPU6050_BAND_21_HZ);

delay(1000); // retard de 1s avant check servo +70°/-70°
servo.write(90 + 10);
delay(200);
servo.write(90 + 15);
delay(200);
servo.write(90 + 20);
delay(200);
servo.write(90 + 25);
delay(200);
servo.write(90 + 30);
delay(200);
servo.write(90 + 35);
delay(200);
servo.write(90 + 40);
delay(200);
servo.write(90 + 45);
delay(200);
servo.write(90 + 50);
delay(200);
servo.write(90 + 55);
delay(200);
servo.write(90 + 60);
delay(200);
servo.write(90 + 65);
delay(200);
servo.write(90 + 70);
servo.write(90); // retour au point neutre
delay(1000);
servo.write(90 - 10);
delay(200);
servo.write(90 - 15);
delay(200);
servo.write(90 - 20);
delay(200);
servo.write(90 - 25);
delay(200);
servo.write(90 - 30);
delay(200);
servo.write(90 - 35);
delay(200);
servo.write(90 - 40);
delay(200);
servo.write(90 - 45);
delay(200);
servo.write(90 - 50);
delay(200);
servo.write(90 - 55);
delay(200);
servo.write(90 - 60);
delay(200);
servo.write(90 - 65);
delay(200);
servo.write(90 - 70);
delay(1000);
// test terminé, l'inclinomètre est pret
}

void loop() {

/* Get new sensor events with the readings */
sensors_event_t a, g, temp;
srituhobby.getEvent(&a, &g, &temp);

int value = a.acceleration.y;

value = map(value, -10, 10, 180, 0);
servo.write(value);
Serial.flush(); // Attend que le buffer de sortie série soit vide avant de poursuivre
Serial.println(value);
//delay(10);
}