#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define TRIGGER_PIN1 4 // Trigger pin sensor ultrasonik 1
#define ECHO_PIN1 5 // Echo pin sensor ultrasonik 1
#define TRIGGER_PIN2 14 // Trigger pin sensor ultrasonik 2
#define ECHO_PIN2 13 // Echo pin sensor ultrasonik 2
#define RELAY_PIN 12 // Pin relay SG90
#define LCD_ADDRESS 0x27 // Address LCD I2C
#define LCD_COLUMNS 16 // Jumlah kolom LCD
#define LCD_ROWS 2 // Jumlah baris LCD
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLUMNS, LCD_ROWS);
unsigned long previousMillis = 0;
const long interval = 1000; // Interval waktu untuk mengukur jarak (dalam milidetik)
void setup() {
Serial.begin(9600);
pinMode(TRIGGER_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIGGER_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
pinMode(RELAY_PIN, OUTPUT);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Simulasi pengukuran jarak
float distance1 = (float)random(50, 101); // Jarak sensor 1 antara 50 dan 100 cm
float distance2 = (float)random(20, 51); // Jarak sensor 2 antara 20 dan 50 cm
// Tampilkan jarak pada LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance1: ");
lcd.print(distance1);
lcd.print(" cm");
lcd.setCursor(0, 1);
lcd.print("Distance2: ");
lcd.print(distance2);
lcd.print(" cm");
// Kontrol relay
if (distance1 >= 50 && distance1 <= 100) {
digitalWrite(RELAY_PIN, HIGH); // Gerakan relay untuk sensor 1
} else {
digitalWrite(RELAY_PIN, LOW);
}
// Tampilkan "PENUH" pada LCD untuk sensor 2
if (distance2 >= 20 && distance2 <= 50) {
lcd.setCursor(0, 1);
lcd.print(" "); // Menghapus teks sebelumnya
lcd.setCursor(0, 1);
lcd.print("PENUH"); // Tampilkan "PENUH" pada LCD untuk sensor 2
} else {
lcd.setCursor(0, 1);
lcd.print(" "); // Menghapus teks sebelumnya
}
}
}