#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
// Pin untuk buzzer atau LED
const int alarmPin = 13;
// Ambang batas akselerasi untuk mendeteksi gempa (dalam g-force)
const float threshold = 1.5;
void setup() {
Serial.begin(9600);
// Inisialisasi MPU6050
Wire.begin();
mpu.initialize();
// Cek apakah MPU6050 terhubung
if (!mpu.testConnection()) {
Serial.println("MPU6050 tidak terhubung");
while (1);
}
// Set pin buzzer atau LED sebagai output
pinMode(alarmPin, OUTPUT);
Serial.println("Sensor MPU6050 siap");
}
void loop() {
// Baca nilai akselerasi
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
// Konversi ke g-force
float gForceX = ax / 16384.0;
float gForceY = ay / 16384.0;
float gForceZ = az / 16384.0;
// Hitung total g-force
float totalForce = sqrt(gForceX * gForceX + gForceY * gForceY + gForceZ * gForceZ);
// Tampilkan nilai g-force
Serial.print("Total g-force: ");
Serial.println(totalForce);
// Jika total g-force melebihi ambang batas, nyalakan alarm
if (totalForce > threshold) {
digitalWrite(alarmPin, HIGH); // Nyalakan buzzer/LED
Serial.println("Gempa terdeteksi!");
} else {
digitalWrite(alarmPin, LOW); // Matikan buzzer/LED
}
delay(500); // Tunda selama 500ms sebelum membaca lagi
}