#define TRIG_PIN 5
#define ECHO_PIN 18
#define LED_DEKAT 2
#define LED_SEDANG 4
#define LED_JAUH 16
#define SAMPLES 5 // Jumlah sampel untuk pengukuran rata-rata
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED_DEKAT, OUTPUT);
pinMode(LED_SEDANG, OUTPUT);
pinMode(LED_JAUH, OUTPUT);
}
void loop() {
float distances[SAMPLES];
float totalDistance = 0;
// Ambil beberapa sampel untuk mengukur jarak rata-rata
for (int i = 0; i < SAMPLES; i++) {
distances[i] = measureDistance();
totalDistance += distances[i];
delay(50); // Beri jeda antara pengambilan sampel
}
float avgDistance = totalDistance / SAMPLES;
// Tampilkan jarak rata-rata di Serial Monitor
Serial.print("Average Distance: ");
Serial.print(avgDistance);
Serial.println(" cm");
// Kontrol LED berdasarkan jarak rata-rata
controlLEDs(avgDistance);
delay(500); // Jeda sebelum pengukuran berikutnya
}
// Fungsi untuk mengukur jarak dengan sensor HC-SR04
float measureDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2;
return distance;
}
// Fungsi untuk mengontrol LED berdasarkan jarak
void controlLEDs(float distance) {
if (distance > 0 && distance < 20) {
digitalWrite(LED_DEKAT, HIGH); // Nyalakan LED untuk jarak dekat
digitalWrite(LED_SEDANG, LOW);
digitalWrite(LED_JAUH, LOW);
Serial.println("Object Detected: Near");
} else if (distance >= 20 && distance < 50) {
digitalWrite(LED_DEKAT, LOW);
digitalWrite(LED_SEDANG, HIGH); // Nyalakan LED untuk jarak sedang
digitalWrite(LED_JAUH, LOW);
Serial.println("Object Detected: Medium Distance");
} else if (distance >= 50) {
digitalWrite(LED_DEKAT, LOW);
digitalWrite(LED_SEDANG, LOW);
digitalWrite(LED_JAUH, HIGH); // Nyalakan LED untuk jarak jauh
Serial.println("Object Detected: Far");
} else {
// Tidak ada objek terdeteksi
digitalWrite(LED_DEKAT, LOW);
digitalWrite(LED_SEDANG, LOW);
digitalWrite(LED_JAUH, LOW);
Serial.println("No Object Detected");
}
}