#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7
const int trigPin = 9;
const int echoPin = 10;
const int redPin = 6;
const int greenPin = 7;
const int bluePin = 8;
void setup() {
lcd.begin(16, 2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
long duration, distance;
// Menghitung jarak
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
// Menampilkan jarak di LCD
lcd.clear();
lcd.print("Jarak: ");
lcd.print(distance);
lcd.print(" cm");
// Mengatur warna LED berdasarkan kondisi
if (distance >= 2 && distance <= 50) {
setColor(255, 0, 0); // Merah
} else if (distance >= 51 && distance <= 150) {
setColor(0, 255, 0); // Hijau
} else {
setColor(0, 0, 255); // Biru
}
delay(1000); // Tunggu 1 detik sebelum pembacaan berikutnya
setColor(0, 0, 0); // Matikan LED sebelum loop berikutnya
}
void setColor(int red, int green, int blue) {
analogWrite(redPin, red); // Mengatur intensitas merah
analogWrite(greenPin, green); // Mengatur intensitas hijau
analogWrite(bluePin, blue); // Mengatur intensitas biru
}