#define ECHO_PIN 4
#define TRIG_PIN 2
#define RED_LED_PIN 13 // Pin untuk LED Merah
#define YELLOW_LED_PIN 34 // Pin untuk LED Kuning
#define BLUE_LED_PIN 12 // Pin untuk LED Biru
#define BUZZER_PIN 19 // Pin untuk buzzer
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(BLUE_LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
}
float readDistanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
float distance = readDistanceCM();
Serial.print("Jarak: ");
Serial.println(distance);
// Mengatur LED dan buzzer berdasarkan jarak
if (distance < 100) {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, LOW);
// Mengaktifkan buzzer pada jarak kurang dari 100 cm
tone(BUZZER_PIN, 2000); // Frekuensi buzzer 2000 Hz
}
else if (distance >= 100 && distance < 200) {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(BLUE_LED_PIN, LOW);
// Matikan buzzer
noTone(BUZZER_PIN);
}
else if (distance >= 200 && distance < 300) {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, HIGH);
// Matikan buzzer
noTone(BUZZER_PIN);
}
else {
// Jika jarak lebih dari 300 cm, semua LED dan buzzer mati
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, LOW);
noTone(BUZZER_PIN);
}
delay(100); // Jeda untuk pembacaan sensor yang stabil
}