#include "LiquidCrystal_I2C.h"
#define ECHO_PIN 2
#define TRIG_PIN 3
#define Merah 6
#define Kuning 5
#define Hijau 4
float X=400/397.63;
LiquidCrystal_I2C lcd(0x27,20,4);// set the LCD address to 0x27 for a 20 chars and 4 line display
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(Merah, OUTPUT);
pinMode(Kuning, OUTPUT);
pinMode(Hijau, OUTPUT);
digitalWrite(Hijau, LOW);
digitalWrite(Kuning, LOW);
digitalWrite(Merah, LOW);
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
}
void loop() {
//Generate ultrasonic signal
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
//Read ultrasonic signal
int duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 * X / 2;
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" CM");
//if(distance < 50) // pakai formula bertingkat
if(distance > 0 && distance < 50) // pakai formula rentang
{
digitalWrite(Hijau, LOW);
digitalWrite(Kuning, LOW);
Serial.println("Merah (Bahaya!!!)");
digitalWrite(Merah, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tinggi Air: ");
lcd.print(distance);
lcd.setCursor(0,1);
lcd.println("Status: Bahaya!!!");
}
//else if (distance < 150) // pakai formula bertingkat
else if (distance >50 && distance < 150) // pakai formula rentang
{
digitalWrite(Hijau, LOW);
digitalWrite(Merah, LOW);
Serial.println("Kuning (Waspada)");
digitalWrite(Kuning, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tinggi Air: ");
lcd.print(distance);
lcd.setCursor(0,1);
lcd.println("Status: Waspada");
}
else
{
digitalWrite(Kuning, LOW);
digitalWrite(Merah, LOW);
Serial.println("Hijau (Normal)");
digitalWrite(Hijau, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Tinggi Air: ");
lcd.print(distance);
lcd.setCursor(0,1);
lcd.println("Status: Normal");
}
delay(500);
}