#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD (Alamat 0x3F, 16 kolom, 2 baris)
// Jika LCD tidak muncul, coba ganti alamat ke 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin HC-SR04
#define TRIG_PIN 5
#define ECHO_PIN 18
// Pin LED
#define LED_MERAH 14
#define LED_HIJAU 27
void setup() {
Serial.begin(115200);
// Pengaturan Pin
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_HIJAU, OUTPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Sistem Jarak");
delay(2000);
lcd.clear();
}
void loop() {
// Trigger sensor ultrasonik
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Menghitung durasi pulsa
long duration = pulseIn(ECHO_PIN, HIGH);
// Menghitung jarak dalam cm
int distance = duration * 0.034 / 2;
// Menampilkan ke Serial Monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Menampilkan ke LCD
lcd.setCursor(0, 0);
lcd.print("Jarak: ");
lcd.print(distance);
lcd.print(" cm "); // Spasi tambahan untuk menghapus angka sebelumnya
// Logika LED
if (distance < 20) { // Jika objek lebih dekat dari 20cm
digitalWrite(LED_MERAH, HIGH);
digitalWrite(LED_HIJAU, LOW);
lcd.setCursor(0, 1);
lcd.print("STATUS: BAHAYA ");
} else {
digitalWrite(LED_MERAH, LOW);
digitalWrite(LED_HIJAU, HIGH);
lcd.setCursor(0, 1);
lcd.print("STATUS: AMAN ");
}
delay(500); // Update setiap 0.5 detik
}