#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
int PIN_TRIG[] = {16,4,18};
int PIN_ECHO[] = {17,5,19};
void setup() {
Serial.begin(115200);
for (int i : PIN_TRIG){
pinMode(i, OUTPUT);
}
for (int i : PIN_ECHO){
pinMode(i, INPUT);
}
LCD_setup();
}
void LCD_setup() {
Wire.begin(21, 22); // SDA, SCL
lcd.begin(20, 4);
lcd.backlight();
}
int* Ultrasonic_Sens(){
static int sensor[] = {};
for (int i = 0; i < (sizeof(PIN_TRIG)/sizeof(PIN_TRIG[0])); i++){
//Serial.println(i);
digitalWrite(PIN_TRIG[i], HIGH);
delayMicroseconds(15);
digitalWrite(PIN_TRIG[i], LOW);
delayMicroseconds(5);
//Read the result:
int duration = pulseIn(PIN_ECHO[i], HIGH);
int mapped_value = map((duration / 58), 0, 403, 0, 100);
sensor[i] = mapped_value;
}
return sensor;
}
void ISI_LCD(int S1,int S2,int S3){
LCD_setup();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("WATER LEVEL MONITOR");
lcd.setCursor(0,1);
lcd.print("BIO-ALKA : " + String(S1) + "%");
lcd.setCursor(0,2);
lcd.print("RO-Besar : " + String(S2) + "%");
lcd.setCursor(0,3);
lcd.print("RO-Kecil : " + String(S3) + "%");
}
void loop() {
int tank_1 = Ultrasonic_Sens()[0];
int tank_2 = Ultrasonic_Sens()[1];
int tank_3 = Ultrasonic_Sens()[2];
Serial.println(tank_1);
Serial.println(tank_2);
Serial.println(tank_3);
ISI_LCD(tank_1,tank_2,tank_3);
delay(1000);
}