/* Cara Membuat Water Level Sensor Arduino dengan Ultrasonic
Dev: teknisibali // Date: 11/11/2019 // www.teknisibali.com */
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16,2);
//pin Ultrasonik
#define pintriger 8 //Pin Trigger Ultrasonic
#define pinecho 7 //Pin Echo Ultrasonic
#define ledlow 11 //Pin LED pada level low
#define ledmiddle 12 //Pin LED pada level middle
#define ledhigh 13 //Pin LED pada level high //Pin Modul Relay untuk peringatan bahaya
void setup() {
Serial.begin (9600); //Inisialisasi komunikasi serial
lcd.begin(16, 2);
//Deklarasi pin
pinMode(pintriger, OUTPUT);
pinMode(pinecho, INPUT);
pinMode(ledlow, OUTPUT);
pinMode(ledmiddle, OUTPUT);
pinMode(ledhigh, OUTPUT);
}
void loop() {
long durasi, jarak; //Varibel durasi dan jarak
digitalWrite(pintriger, LOW);
delayMicroseconds(2);
digitalWrite(pintriger, HIGH);
delayMicroseconds(10);
digitalWrite(pintriger, LOW);
durasi = pulseIn(pinecho, HIGH);
jarak = (durasi/2) / 29.2; //Perhitungan untuk pembacaan jarak
Serial.print(jarak);
Serial.println (" cm");
lcd.setCursor(0,0);
lcd.print("Posisi Air=");
lcd.print(jarak); //Menampilkan jarak pada LCD 16x2
lcd.print("cm ");
lcd.setCursor(0,1);
lcd.print("KEADAAN: ");
if (jarak <= 300) //Pada jarak lebih dari sama dengan 21 cm mengaktifkan LED level low
{
digitalWrite(ledlow, LOW);
digitalWrite(ledmiddle, LOW);
digitalWrite(ledhigh, HIGH);
lcd.setCursor(8,1);
lcd.print("HABIS ");
}
else {
digitalWrite(ledhigh, LOW);
}
if (jarak <= 200) //Pada jarak kurang dari sama dengan 20 cm mengaktifkan LED level middle
{
digitalWrite(ledmiddle, HIGH);
digitalWrite(ledlow, LOW);
lcd.setCursor(8,1);
lcd.print("SEDANG");
}
if (jarak < 20) //Pada jarak kurang dari 15 cm mengaktifkan LED level high
{
digitalWrite(ledlow, HIGH);
digitalWrite(ledmiddle, LOW);
lcd.setCursor(8,1);
lcd.print("PENUH ");
}
delay(500);
}