//PACKAGE
#include <LiquidCrystal_I2C.h> //PACKAGE LIBRARY PANEL LCD
#include <Servo.h> //PACKAGE LIBRARY SERVO
#include <SPI.h> //PACKAGE LIBRARY PANEL LED OLED
#include <Wire.h> //PACKAGE LIBRARY PANEL LED OLED
//DECLARATION
#define ECHO_PIN 2
#define TRIG_PIN 3
#define buzzer 4
#define ledmerah 13
#define ledkuning 12
#define ledhijau 11
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
//LIBRARY
Servo myservo; //VARIABLE SERVO
int pos = 0; //POSITION START
LiquidCrystal_I2C lcd(0x27,20,4); //VARIABEL PANEL LED
void setup() {
myservo.attach(10); //POSITION PIN SERVO
pinMode(ledmerah, OUTPUT); //LED MERAH (BAHAYA)
pinMode(ledkuning, OUTPUT); //LED KUNING (SIAGA)
pinMode(ledhijau, OUTPUT); //LED HIJAU (AMAN)
pinMode(TRIG_PIN, OUTPUT); //READ SECOND KETINGGIAN
pinMode(ECHO_PIN, INPUT); //READ KETINGGIAN
pinMode(buzzer, OUTPUT); //PERINGATAN
Serial.begin(9600);
lcd.init();
lcd.backlight();
digitalWrite(ledmerah, HIGH);
digitalWrite(ledkuning, HIGH);
digitalWrite(ledhijau, HIGH);
tone(4,300,500);
lcd.setCursor(1,0);
lcd.print("DETECTOR BANJIR");
lcd.setCursor(6,1);
lcd.print("OLEH");
delay(2000);
lcd.setCursor(0,0);
lcd.print("- ILHAM HASBY");
lcd.setCursor(0,1);
lcd.print("- ANNISA H SIKUMBANG");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("- SANDRILLA MAHARANI");
lcd.setCursor(0,1);
lcd.print("- CUT F A NASUTIION");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("- YOHANES G SIREGAR");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" KELOMPOK 4");
lcd.setCursor(0,1);
lcd.print("MITIGASI BENCANA");
delay(3000);
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
digitalWrite(buzzer, LOW);
lcd.clear();
}
float kedalaman(){
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int durasi = pulseIn(ECHO_PIN, HIGH);
return 400-durasi*0.034/2;
}
void loop() {
float kdlm = kedalaman(); //VARIABEL KETINGIAN AIR
if(kdlm > 370) //CONDITION = BAHAYA
{
//ORDER SERVO
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
}
//SERVO
//INDICATOR LED
digitalWrite(ledmerah, HIGH);
delay(5);
digitalWrite(ledmerah, LOW);
delay(5);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, LOW);
//INDICATOR
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Kdlmn :");
lcd.setCursor(7,0);
lcd.print(kdlm);
lcd.setCursor(14,0);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("Status :");
lcd.setCursor(9,1);
lcd.print("Bahaya");
tone(4,800,1000);
delay(500);
lcd.clear();
delay(100);
}
else{ //CONDITION = SIAGA
if(kdlm >= 320 && kdlm < 370)
{
//ORDER SERVO
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
}
//SERVO
//INDICATOR LED
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, HIGH);
digitalWrite(ledhijau, LOW);
//INDICATOR
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Kdlmn :");
lcd.setCursor(7,0);
lcd.print(kdlm);
lcd.setCursor(14,0);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("Status :");
lcd.setCursor(9,1);
lcd.print("Siaga");
//digitalWrite(buzzer, LOW);
delay(1000);
lcd.clear();
delay(100);
}
else{ //CONDITION = AMAN
//ORDER SERVO
for (pos = 90; pos >= 90; pos -= 1) {
myservo.write(pos);
}
//SERVO
//INDICATOR LED
digitalWrite(ledmerah, LOW);
digitalWrite(ledkuning, LOW);
digitalWrite(ledhijau, HIGH);
//INDICATOR
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Kdlmn :");
lcd.setCursor(7,0);
lcd.print(kdlm);
lcd.setCursor(14,0);
lcd.print("cm");
lcd.setCursor(0,1);
lcd.print("Status :");
lcd.setCursor(9,1);
lcd.print("Aman");
digitalWrite(buzzer, LOW);
delay(1000);
lcd.clear();
delay(100);
}
}
}