#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
const int Buzz = 11;
const float BTSGetaran = 2.0;
const float BTSKemiringan = 45.0;
void setup(){
Serial.begin(9600);
pinMode(Buzz, OUTPUT);
mpu.initialize();}
void loop() {
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
float akselerasix = ax / 16384.0;
float akselerasiy = ay / 16384.0;
float akselerasiz = az / 16384;
float totalGetaran = sqrt(pow(akselerasix, 2) + pow(akselerasiy, 2) + pow(akselerasiz, 2));
int16_t gx, gy, gz;
mpu.getRotation(&gx,&gy,&gz);
float rotasix = gx / 131.0;
float rotasiy = gy / 131.0;
float rotasiz = gz / 131.0;
float kemiringanx = atan(akselerasiy / sqrt(pow(akselerasiy, 2) + pow(akselerasiz, 2))) * 180 / M_PI;
float kemiringany = atan(akselerasix / sqrt(pow(akselerasiz, 2) + pow(akselerasiz, 2))) * 180 / M_PI;
Serial.print("Total Getaran = "); Serial.println(totalGetaran);
Serial.print("Kemiringan X = "); Serial.println(kemiringanx);
Serial.print("Kemiringan Y = "); Serial.println(kemiringany);
if (totalGetaran >= BTSGetaran || abs(kemiringanx) >= BTSKemiringan && abs(kemiringany >= BTSKemiringan)){
digitalWrite(Buzz, HIGH);
Serial.println("Alarm: Getaran atau Kemiringan Melebihi Batas");
} else {
digitalWrite(Buzz, LOW);
Serial.println("Alarm: Getaran atau Kemiringan Kurang dari Batas"); }
delay(5000);}