#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
float Scala_richter = 0;
bool alarmAktif = false;
bool nilaiNegatifTerdeteksi = false;
bool perubahanKeNegatif = false;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(19, OUTPUT);
pinMode(18, OUTPUT);
pinMode(5, OUTPUT);
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
Serial.println("MPU6050 ready!");
}
sensors_event_t event;
float ScalaRichter(){
mpu.getAccelerometerSensor()->getEvent(&event);
float yKuadrat = event.acceleration.y * event.acceleration.y;
float xKuadrat = event.acceleration.x * event.acceleration.x;
if (event.acceleration.x >= 0 && event.acceleration.y >= 0) {
Scala_richter = sqrt(yKuadrat + xKuadrat);
nilaiNegatifTerdeteksi = false;
} else {
if (!nilaiNegatifTerdeteksi) {
// Hanya setel nilaiNegatifTerdeteksi menjadi true jika belum terdeteksi sebelumnya
nilaiNegatifTerdeteksi = true;
} else {
Scala_richter = 0;
perubahanKeNegatif = true; // Setel perubahanKeNegatif menjadi true
}
}
return Scala_richter;
}
void loop() {
// put your main code here, to run repeatedly:
beeb();
}
void beeb(){
float valueSR = ScalaRichter();
Serial.print(valueSR);
Serial.println(" Magnitude");
if(event.acceleration.y >= 0 && event.acceleration.x >= 0){
if (alarmAktif && !perubahanKeNegatif) {
if(valueSR <= 0){
noTone(26);
alarmAktif = false;
} else if(valueSR > 0 && valueSR <= 3){
tone(26, 500);
digitalWrite(19, HIGH);
delay(1000);
noTone(26);
digitalWrite(19, LOW);
delay(1000);
} else if(valueSR > 3 && valueSR <= 4.5){
tone(26, 500);
digitalWrite(18, HIGH);
delay(500);
noTone(26);
digitalWrite(18, LOW);
delay(500);
}else if(valueSR > 4.5 && valueSR <= 6){
tone(26, 500);
digitalWrite(18, HIGH);
delay(250);
noTone(26);
digitalWrite(18, LOW);
delay(250);
}else if(valueSR > 6){
tone(26, 500);
digitalWrite(5, HIGH);
delay(100);
noTone(26);
digitalWrite(5, LOW);
delay(100);
}
}else{
if (!perubahanKeNegatif && valueSR > 3) {
alarmAktif = true;
}
}
} else {
tone(26, 0);
alarmAktif = false;
perubahanKeNegatif = false;
}
}