#include <Wire.h>
#include <ESP32Servo.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(15,4,5,18,19,21);
Servo servok;
const int mpu = 0x68;
int16_t x, y, z;
float ax=0;
float ay=0;
float az=0;
void valuemess(){
Wire.beginTransmission(mpu);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(mpu, 6, true);
x = Wire.read() << 8 | Wire.read();
y = Wire.read() << 8 | Wire.read();
z = Wire.read() << 8 | Wire.read();
}
void setup() {
servok.attach(32);
lcd.begin(16,2);
Wire.begin(13,22);
Serial.begin(115200);
Wire.beginTransmission(mpu);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
Wire.beginTransmission(mpu);
Wire.write(0x1C);
Wire.write(0x08);
Wire.endTransmission(true);
}
void loop() {
float xv,yv,zv;
valuemess();
xv=x;
yv=y;
zv=z;
xv/=8192;
yv/=8192;
zv/=8192;
float pitchang = atan2(yv, zv) * 180.0 / PI;
float pitch=pitchang/1.416;
float rollang = atan2(xv, zv) * 180.0 / PI;
float roll=rollang/1.416;
servok.write(pitchang);
Serial.print("pitch=");
Serial.print(pitchang);
Serial.print("||");
Serial.print("roll=");
Serial.println(rollang);
Serial.print("x value =");
Serial.print(xv);
Serial.print("||");
Serial.print("y value =");
Serial.print(yv);
Serial.print("||");
Serial.print("z value =");
Serial.println(zv);
lcd.print("pitch=");
lcd.print(pitchang);
lcd.setCursor(0,1);
lcd.print("roll=");
lcd.print(rollang);
delay(100);
lcd.clear();
}