#include <LiquidCrystal_I2C.h>
#define PIN_TRIG 26
#define PIN_ECHO 25
#define LOWLED 18
#define MIDLED 19
#define HIGHLED 21
#define MOTOR 5
// declare the variable 'level'
unsigned int level = 0;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
pinMode(LOWLED,OUTPUT);
pinMode(MIDLED,OUTPUT);
pinMode(HIGHLED,OUTPUT);
pinMode(MOTOR,OUTPUT);
digitalWrite(LOWLED,HIGH);
digitalWrite(MIDLED,HIGH);
digitalWrite(HIGHLED,HIGH);
digitalWrite(MOTOR,HIGH);
Serial.begin(115200);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
}
void loop() {
// Start a new measurement:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
Serial.print("Distance in CM: ");
Serial.println(duration / 58);
Serial.print("Distance in inches: ");
Serial.println(duration / 148);
level = duration / 58;
lcd.init();
lcd.clear();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("WATER TANK LEVEL");
if (level < 100)
{
digitalWrite(LOWLED,HIGH);
digitalWrite(MOTOR,LOW);
digitalWrite(HIGHLED,HIGH);
digitalWrite(MIDLED,HIGH);
lcd.setCursor(0,1);
lcd.print("VERY LOW");
}
else if (level < 200) // add parentheses around the '&&' operator
{
digitalWrite(MOTOR,HIGH);
digitalWrite(LOWLED,LOW);
digitalWrite(HIGHLED,HIGH);
digitalWrite(MIDLED,HIGH);
lcd.setCursor(0,1);
lcd.print("MEDIUM");
}
else if (level < 300)
{
digitalWrite(MOTOR,HIGH);
digitalWrite(LOWLED,HIGH);
digitalWrite(HIGHLED,HIGH);
digitalWrite(MIDLED,LOW);
lcd.setCursor(0,1);
lcd.print("MEDIUM");
}
else if (level <= 400)
{
digitalWrite(HIGHLED,LOW);
digitalWrite(MIDLED,HIGH);
digitalWrite(LOWLED,HIGH);
digitalWrite(MOTOR,HIGH);
lcd.setCursor(0,1);
lcd.print("HIGH");
}
delay(1000);
}