#include <Adafruit_Sensor.h>
#include <Adafruit_MPU6050.h>
#include <ESP32Servo.h>
// Inicializar el objeto del giroscopio
Adafruit_MPU6050 mpu;
// Inicializar el objeto del servo
Servo miServo;
void setup() {
Serial.begin(115200);
// Inicializar el giroscopio
if (!mpu.begin()) {
Serial.println("Giroscopio no encontrado. Conecta correctamente o revisa la dirección I2C.");
while (1);
}
// Inicializar el servo en el pin D5 de la ESP32
miServo.attach(5);
}
void loop() {
// Leer los valores del giroscopio
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
// Obtener la aceleración en el eje x
float aceleracionX = a.acceleration.x;
// Obtener la velocidad angular en el eje x
float velocidadAngularX = g.gyro.x;
// Mapear la aceleración a la escala del servo (ajusta según sea necesario)
int anguloServo = map(aceleracionX, -9.8, 9.8, 0, 180);
// Limitar los valores del servo
anguloServo = constrain(anguloServo, 0, 180);
// Mover el servo al ángulo calculado
miServo.write(anguloServo);
// Imprimir valores para depuración
Serial.print("Aceleración X: ");
Serial.print(aceleracionX);
Serial.print(" | Ángulo Servo: ");
Serial.println(anguloServo);
delay(500); // Ajusta el retardo según sea necesario
}