int sensorPin=35;
int BuzzerPin = 23;
float volt;
float ntu;
int UT = 18;
int UE = 19;
int waterTank = 1000;
int Motor = 4;
int waterLevel = 1000;
int threshold = 2135; //Add the threshold value you need for safety
int pin1 =12;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
int inches = 0;
int cm = 0;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}
void setup() {
Serial.begin(9600);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
pinMode(pin1, OUTPUT);
pinMode(BuzzerPin,OUTPUT);
pinMode(Motor,OUTPUT);
}
void loop() {
volt = (float)analogRead(sensorPin) * (5.0 / 1024.0);
ntu = 1000.4*(volt*volt)+5742.3*volt-4352.9;
if (ntu < threshold) {
digitalWrite(pin1, HIGH);
tone(BuzzerPin,500);
LCD.setCursor(0, 1);
LCD.print("Quality = ");
LCD.print("UnSafe");
}
else {
digitalWrite(pin1, LOW);
noTone(BuzzerPin);
LCD.setCursor(0, 1);
LCD.print("Quality = ");
LCD.print("Safe ");
}
cm = 0.01723 * readUltrasonicDistance(UT, UE);
// Serial.println(cm);
waterLevel = waterTank-cm;
Serial.print("Water Level = ");
Serial.println(waterLevel);
LCD.setCursor(0, 0);
LCD.print("WaterLevel=");
LCD.print(waterLevel);
LCD.print("ml");
delay(500);
if (cm>250){
digitalWrite(Motor,HIGH);
LCD.clear();
LCD.setCursor(0, 0);
LCD.print("Motor Turned on");
}
if (cm<50){
digitalWrite(Motor,LOW);
}
Serial.println(volt);
Serial.println(ntu);
delay(1000);
}