#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//Inisialisasi LCD dengan alamat 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Definisi pin sensor ultrasonik
const int trigPin = 13;
const int echoPin = 12;
//Definisi pin LED
const int ledMerah = 11;
const int ledKuning = 10;
const int ledHijau = 9;
//Variabel untuk menyimpan jarak
long duration;
int distance;
void setup() {
// Inisialisasi pin
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledHijau, OUTPUT);
//Inisialisasi LCD
lcd.init();
lcd.backlight();
//Tampilkan pesan awal di Lcd
lcd.setCursor(0,0);
lcd.print("Jarak: ");
}
void loop() {
//Kirimkan sinyal trigger untuk memulai pengukuran
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//Hitung waktu yang dibutuhkan pantulan
duration = pulseIn(echoPin, HIGH);
//Hitung jarak dalam cm
distance = duration * 0.034 / 2;
//Tampilkan jarak di LCd
lcd.setCursor(7,0);
lcd.print(distance);
lcd.print(" cm");
if (distance < 30) {
digitalWrite(ledMerah, HIGH);
digitalWrite(ledKuning, LOW);
digitalWrite(ledHijau, LOW);
}
else if(distance < 50){
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, HIGH);
digitalWrite(ledHijau, LOW);
}
else {
digitalWrite(ledMerah, LOW);
digitalWrite(ledKuning, LOW);
digitalWrite(ledHijau, HIGH);
}
delay(500); //Delay untuk stabilitas
}