// Set water level in cm
int emptyTankDistance = 70;
int fullTankDistance = 30;
const int trigPin = 18;
const int echoPin = 19;
// Define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.393701
long duration;
float distanceCm;
float distanceInch;
#define pinBuzzer 2
#define pinLED1 5
#define pinLED2 4
#include <WiFi.h>
#include <WiFiClient.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
Adafruit_MPU6050 mpu;
void setup()
{
Serial.begin(115200);
pinMode(pinBuzzer, OUTPUT);
pinMode(pinLED1, OUTPUT);
pinMode(pinLED2, OUTPUT);
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
// Try to initialize MPU6050
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 Found!");
mpu.setAccelerometerRange(MPU6050_RANGE_16_G);
mpu.setGyroRange(MPU6050_RANGE_250_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("");
delay(100);
}
void loop()
{
deteksigempa();
}
void deteksigempa()
{
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
int acX = a.acceleration.x;
int acY = a.acceleration.y;
int acZ = a.acceleration.z;
String v = ",";
String x = String(acX);
String y = String(acY);
String z = String(acZ);
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculate the distance
distanceCm = duration * SOUND_SPEED / 2;
// Convert to inches
distanceInch = distanceCm * CM_TO_INCH;
delay(1000);
if (distanceInch > 70) {
tone(pinBuzzer, 1000);
digitalWrite(pinLED2, HIGH);
Serial.println("SITUASI LEVEL AIR");
Serial.println("Level Air Tinggi !!!");
Serial.print("Level Air (inch): ");
Serial.println(distanceInch);
Serial.println("");
} else {
noTone(pinBuzzer);
digitalWrite(pinLED2, LOW);
Serial.println("SITUASI LEVEL AIR");
Serial.println("Level Air Aman");
Serial.print("Level Air (inch): ");
Serial.println(distanceInch);
Serial.println("");
}
if (acX > 4 || acY > 4 || acZ > 13) {
tone(pinBuzzer, 1000);
digitalWrite(pinLED1, HIGH);
Serial.println("SITUASI GEMPA");
Serial.println("AWAS GEMPA BUMI !!! " + x + v + y + v + z);
Serial.println("");
} else {
noTone(pinBuzzer);
digitalWrite(pinLED1, LOW);
Serial.println("SITUASI GEMPA");
Serial.println("AMAN " + x + v + y + v + z);
Serial.println("");
}
delay(1500);
}