#define Trig 33
#define Echo 25
#define Pompa 27
float distance, duration, volume, tinggiAir;
float tinggiTandon = 400; //tinggi tandon
float jari2 = 5;
float sisaAir = tinggiTandon * 0.1;
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup()
{
// Debug console
Serial.begin(115200);
pinMode(Trig, OUTPUT); // Sets the trigPin as an Output
pinMode(Echo, INPUT); // Sets the echoPin as an Input
pinMode(Pompa, OUTPUT);
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Jarak : ");
lcd.setCursor(11,0);
lcd.print(" cm");
lcd.setCursor(0,1);
lcd.print("Volume: ");
lcd.setCursor(11,1);
lcd.print(" cm3");
digitalWrite(Pompa, HIGH);
}
void loop()
{
digitalWrite(Trig, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
duration = pulseIn(Echo, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
distance = duration * 0.034 / 2;
tinggiAir = tinggiTandon - distance;
volume = 3.14 * (jari2 * jari2) * tinggiAir;
Serial.print(distance);
Serial.println(" cm");
Serial.print(volume);
Serial.println(" cm3");
lcd.setCursor(8,0);
lcd.print(distance);
lcd.setCursor(8,1);
lcd.print(volume);
if (distance > 395) {
digitalWrite(Pompa, LOW);
while (distance > sisaAir) {
digitalWrite(Trig, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
duration = pulseIn(Echo, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
distance = duration * 0.034 / 2;
tinggiAir = tinggiTandon - distance;
volume = 3.14 * (jari2 * jari2) * tinggiAir;
Serial.print(distance);
Serial.println(" cm");
Serial.print(volume);
Serial.println(" cm3");
lcd.setCursor(8,0);
lcd.print(distance);
lcd.setCursor(8,1);
lcd.print(volume);
}
} else if(distance<=sisaAir) {
digitalWrite(Pompa, HIGH);
}
}