#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
Adafruit_MPU6050 mpu;
#define BUZZER_PIN 25
#define SW420_PIN 35
float baseline = 0;
bool calibrated = false;
void setup() {
Serial.begin(115200);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(SW420_PIN, INPUT_PULLUP);
Wire.begin(21, 22);
if (!mpu.begin()) {
Serial.println("MPU6050 not found!");
while (1);
}
Serial.println("Local Quake Alert started");
}
void loop() {
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
float mag = sqrt(
a.acceleration.x * a.acceleration.x +
a.acceleration.y * a.acceleration.y +
a.acceleration.z * a.acceleration.z
);
if (!calibrated) {
baseline = mag;
calibrated = true;
}
float vibration = abs(mag - baseline);
bool sw420Triggered = digitalRead(SW420_PIN) == LOW;
Serial.print("Vibration: ");
Serial.print(vibration);
Serial.print(" | SW420: ");
Serial.println(sw420Triggered);
if (sw420Triggered && vibration > 2.0) {
digitalWrite(BUZZER_PIN, HIGH);
Serial.println("!!! EARTHQUAKE ALERT !!!");
} else {
digitalWrite(BUZZER_PIN, LOW);
}
delay(50);
}