#include <LiquidCrystal_I2C.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
//,
Adafruit_MPU6050 mpu;
float Scala_richter = 0;
sensors_event_t event;
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
lcd.init(); // initialize the lcd
lcd.backlight();
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
lcd.setCursor(0, 0); // move cursor to (0, 0)
lcd.print("MPU ready");
delay(1000);
lcd.setCursor(0, 0); // move cursor to (0, 0)
lcd.print("Alat Pendeteksi");
lcd.setCursor(0, 1); // move cursor to (0, 0)
lcd.print(" GEMPA ");
delay(1000);
lcd.clear(); // clear display
}
void loop()
{
lcd.setCursor(0, 0); // move cursor to (0, 0)
lcd.print("Magni :"); // print message at (0, 0)
lcd.print(Scala_richter); // print message at (2, 1)
lcd.print(" SR");
delay(20); // display the above for two seconds
alarm(); // display the above for two seconds
}
float ScalaRichter(){
mpu.getAccelerometerSensor()->getEvent(&event);
float yKuadrat = event.acceleration.y * event.acceleration.y;
float xKuadrat = event.acceleration.x * event.acceleration.x;
Scala_richter = sqrt(yKuadrat + xKuadrat);
return Scala_richter;
}
void alarm(){
float valueSR = ScalaRichter();
Serial.print(valueSR);
Serial.println(" Magnitude");
if(event.acceleration.y >= 0 && event.acceleration.x >= 0){
if(valueSR <= 0){
noTone(11);
digitalWrite(12, HIGH);
lcd.setCursor(0, 1); // move cursor to (0, 1)
lcd.print("AMAN "); // print message at (0, 1)
}else if(valueSR > 0 && valueSR <= 3){
tone(11, 500);
digitalWrite(13, HIGH);
delay(1000);
noTone(11);
digitalWrite(13, LOW);
delay(1000);
digitalWrite(12, LOW);
lcd.setCursor(0, 1); // move cursor to (0, 1)
lcd.print("Gempa Ringan "); // print message at (0, 1)
}else if(valueSR > 3 && valueSR <= 4.5){
tone(11, 500);
digitalWrite(13, HIGH);
delay(500);
noTone(11);
digitalWrite(13, LOW);
delay(500);
digitalWrite(12, LOW);
lcd.setCursor(0, 1); // move cursor to (0, 1)
lcd.print("Gempa Sedang "); // print message at (0, 1)
}else if(valueSR > 4.5 && valueSR <= 6){
tone(11, 500);
digitalWrite(13, HIGH);
delay(250);
noTone(11);
digitalWrite(13, LOW);
delay(250);
digitalWrite(12, LOW);
lcd.setCursor(0, 1); // move cursor to (0, 1)
lcd.print("Gempa Sedang 2"); // print message at (0, 1)
}else if(valueSR > 6){
tone(11, 500);
digitalWrite(13, HIGH);
delay(100);
noTone(11);
digitalWrite(13, LOW);
delay(100);
digitalWrite(12, LOW);
lcd.setCursor(0, 1); // move cursor to (0, 1)
lcd.print("Gempa Kuat "); // print message at (0, 1)
}
}else{
tone(26, 0);
}
}