// --- Konfigurasi PIN sesuai Gambar ---
#define pinR 25 // LED Merah
#define pinG 26 // LED Hijau (asumsi pin tengah RGB)
#define pinB 27 // LED Biru
#define pinTrig 33 // Trig Ultrasonik
#define pinEcho 32 // Echo Ultrasonik
#define pinLDR 34 // LDR Analog (AO)
// --- Variabel ---
long durasi;
int jarak;
int nilaiLDR;
void setup() {
Serial.begin(115200);
// Setup Pin Mode
pinMode(pinR, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(pinLDR, INPUT);
}
void loop() {
// 1. Baca Sensor Ultrasonik
digitalWrite(pinTrig, LOW);
delayMicroseconds(2);
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrig, LOW);
durasi = pulseIn(pinEcho, HIGH);
jarak = durasi * 0.034 / 2; // Konversi ke CM
// 2. Baca Sensor LDR
nilaiLDR = analogRead(pinLDR);
// Print ke Serial Monitor untuk Debugging
Serial.print("Jarak: "); Serial.print(jarak);
Serial.print(" cm | LDR: "); Serial.println(nilaiLDR);
// 3. Logika Sederhana (Contoh)
// Jika Gelap (LDR tinggi) dan Jarak dekat (< 20cm), LED Merah Nyala
if (nilaiLDR > 2000 && jarak < 20) {
digitalWrite(pinR, HIGH);
digitalWrite(pinG, LOW);
digitalWrite(pinB, LOW);
}
// Jika Terang, LED Hijau Nyala
else if (nilaiLDR < 2000) {
digitalWrite(pinR, LOW);
digitalWrite(pinG, HIGH);
digitalWrite(pinB, LOW);
}
// Jika Jarak jauh, LED Biru Nyala
else {
digitalWrite(pinR, LOW);
digitalWrite(pinG, LOW);
digitalWrite(pinB, HIGH);
}
delay(500); // Tunggu setengah detik agar pembacaan stabil
}