#include <NewPing.h> // library sensor ultrasonik
#include <LiquidCrystal_I2C.h> // library lcd I2C
int persen = 0; // Deklarasi variabel persen
// definisi pin ultrasonik
#define TRIGGER_PIN_1 23 // Pin Triger
#define ECHO_PIN_1 19 // Pin Echo untuk sensor pertama
#define TRIGGER_PIN_2 5 // Pin Triger
#define ECHO_PIN_2 18 // Pin Echo untuk sensor kedua
#define MAX_DISTANCE 400 // Maksimum jarak yang akan diukur (dalam cm)
NewPing jarakGelas(TRIGGER_PIN_1, ECHO_PIN_1, MAX_DISTANCE); // membuat objek sensor ultrasonik pertama
NewPing tinggiAir(TRIGGER_PIN_2, ECHO_PIN_2, MAX_DISTANCE); // membuat objek sensor ultrasonik kedua
// definisi lcd I2C
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 20, 4);
// definisi Motor stepper
byte dirPin = 15;
byte stepPin = 2;
// definisi Button
const int buttonPin = 17;
// definisi LED
#define LED 0
void setup() {
Serial.begin(115200);
LCD.init();
pinMode(dirPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(LED, OUTPUT);
}
void loop() {
// melakukan pengukuran jarak
float durasiJarakGelas = jarakGelas.ping();
float durasiTinggiAir = tinggiAir.ping();
// convert menjadi cm
int jarakGelasCm = durasiJarakGelas * 0.034 / 2;
int tinggiAirCm = durasiTinggiAir * 0.034 / 2;
if(tinggiAirCm <=52)
{
persen = (52 - tinggiAirCm) * 2;
}
else
{
persen =0;
}
LCD.setCursor(0, 0);
LCD.print("Isi galon :");
LCD.print(persen);
LCD.print(" % ");
if(jarakGelasCm <= 4){
digitalWrite(dirPin, HIGH);
for (int i = 0; i < 200; i++) {
digitalWrite(stepPin, LOW);
delayMicroseconds(500);
digitalWrite(stepPin, HIGH);
delayMicroseconds(500);
}
}
if(persen <= 20){
digitalWrite(LED, HIGH);
}
delay(10);
}