const int trigPin = 9; //mendeklarasikan pin untuk trigger (pin 9 pada arduino uno)
const int echoPin = 10; //Mendeklarasikan pin untuk echo (pin 10 pada arduino uno)
//mendeklarasikan pin untuk Led
const int redLedPin = 3; //Led merah (indikator jarak dekat)
const int yellowLedPin = 4; //led kuning (indikator jarak menengah)
const int greenLedPin = 5; //led hijau (indikator jarak jauh)
#define SOUND_SPEED 0.034
long duration; // Variabel untuk menyimpan durasi waktu gelombang suara
float distanceCm;// Variabel untuk menyimpan jarak dalam cm
void setup() {
Serial.begin(115200); //Memulai komunikasi serial pada baud rate 115200
pinMode(trigPin, OUTPUT); //menetapkan pin trigPin sebagai Output
pinMode(echoPin, INPUT); //menetapkan pin echoPin sebagai input
//menetapkan pin LED sebagai output
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
//Menghidupkan LED hijau untuk memastikan LED terhubung dengan benar
digitalWrite(greenLedPin, HIGH);
delay(1000); //LED hijau menyala selama 1 detik
digitalWrite(greenLedPin, LOW); //matikan led hijau setelah 1 detik
}
void loop() {
digitalWrite(trigPin, LOW); //Membersihkan pin trigPin dengan LOW
delayMicroseconds(2); //menunggu selama 2 microdetik
digitalWrite(trigPin, HIGH);//Mengaktifkan pin trigPin dengan high dengan 10 microdetik
delayMicroseconds(10);// menunggu selama 10 microdetik
digitalWrite(trigPin, LOW);//Menonaktifkan pin trigPin dengan LOW
//membaca echoPin, mengembalikan waktu perjalanan gelombang suara dalam microdetik
duration = pulseIn(echoPin, HIGH);
//menghitung jarak berdasarkan durasi waktu perjalanan gelombang suara
distanceCm = duration * SOUND_SPEED / 2 ; //Menggunakan rumus jarak = (waktu * kecepatan suara)/2
//mencetak hasil jarak pada serial minitor dalam cm
Serial.print("distance (cm): ");
Serial.println(distanceCm);
//menyalakan LED berdasarkan jarak pada serial monitor dalam cm
if (distanceCm < 20) { //jarak sangat dekat (misalnya kurang dari 10 cm)
digitalWrite( redLedPin, HIGH); //menyalakan led merah
digitalWrite( yellowLedPin, LOW); //mematikan led kuning
digitalWrite( greenLedPin, LOW); //mematikan led hijau
}
else if (distanceCm >= 10 && distanceCm < 60){ //jarak sedang (10 cm hingga 30 cm)
digitalWrite( redLedPin, LOW); //mematikan led merah
digitalWrite( yellowLedPin, HIGH); //menyalakan led kuning
digitalWrite( greenLedPin, LOW); //mematikan led hijau
}
else {// jarak jauh (lebih dari 60 cm)
digitalWrite( redLedPin, LOW); //mematikan led merah
digitalWrite( yellowLedPin, LOW); //mematikan led kuning
digitalWrite( greenLedPin, HIGH); //menyalakan led hijau
}
delay(1000);// menunggu selama 1 detik sebelum pengukuran berikutnya
}