#include <LiquidCrystal_I2C.h>
#define trigPin 5
#define echoPin 4
#define ledRed 8
#define ledYellow 7
#define ledGreen 6
#define sensorPos 400 //posisi ketinggian sensor dari dasar sungai
LiquidCrystal_I2C lcd(0x27,20,4);
float readDist() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
int duration = pulseIn(echoPin,HIGH);
return duration * 0.034 / 2;
}
void allOff(){
digitalWrite(ledRed, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledGreen, LOW);
}
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(1,0);
lcd.print("Ketinggian Air");
lcd.setCursor(9,1);
lcd.print("cm");
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);
}
void loop() {
float distance = readDist();
float level = sensorPos - distance;
lcd.setCursor(1,1);
lcd.print(level);
if(level<101) {
allOff();
digitalWrite(ledRed, HIGH);
}else if(level<151) {
allOff();
digitalWrite(ledYellow, HIGH);
} else {
allOff();
digitalWrite(ledGreen,HIGH);
}
}