#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD12C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin untuk LED
const int redPin = 9;
const int yellowPin = 10;
const int greenPin = 11;
void setup() {
// Inisialisasi serial monitor
Serial.begin(9600);
// Inisialisasi LCD12C
lcd.init();
lcd.backlight();
// Inisialisasi pin LED
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
void loop() {
// Baca jarak dari sensor ultrasonik
long duration, distance;
pinMode(9, OUTPUT);
digitalWrite(9, LOW);
delayMicroseconds(10);
digitalWrite(9, HIGH);
delayMicroseconds(10);
digitalWrite(9, LOW);
duration = pulseIn(10, HIGH);
distance = (duration / 2) / 29.1; // Konversi waktu ke jarak dalam cm
// Tampilkan jarak pada LCD12C
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jarak: ");
lcd.print(distance);
lcd.print(" cm");
// Kontrol LED berdasarkan jarak
if (distance > 30) {
digitalWrite(greenPin, HIGH);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
} else if (distance >= 15 && distance <= 29) {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, HIGH);
} else if (distance >= 0 && distance < 15) {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, LOW);
} else {
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
}
// Tunggu selama 1 detik sebelum mengukur lagi
delay(1000);
}