// mendefinisikan pin sensorultrasonic
#define pintri 8
#define pinech 9
// mendefinisikan pin sensorultrasonic
#define pink 7
#define pinh 6
#define pinb 5
#define pinm 4
// mendefinisikan pin buzzer
#define pinbuz 11
void setup() {
Serial.begin(9600);
// memberikan ouput atau input pada setiap pin yang sudah di definisan
pinMode(pintri, OUTPUT);
pinMode(pinech, INPUT);
pinMode(pink, OUTPUT);
pinMode(pinh, OUTPUT);
pinMode(pinb, OUTPUT);
pinMode(pinm, OUTPUT);
}
void loop() {
// bersihkan sensor ultrasonic
digitalWrite(pintri, LOW); // matikan triger(pemancar sinyal)
delayMicroseconds(2); // waktu tunggu skala mikrodetik
// kirim sinyal sensor ultrasonic
digitalWrite(pintri, HIGH); // menyalakan triger(pemancar sinyal)
delayMicroseconds(10); // waktu tunggu skala mikrodetik
digitalWrite(pintri, LOW); // matikan triger(pemancar sinyal)
// membaca durasi
int durasi = pulseIn(pinech, HIGH); // sinyal di terima echo dan dideklasikan sebagai "durasi"
//menghitung jarak dalam satuan cm
unsigned int jarak = durasi * 0.034/2; // 0.034 adalah kecepatan suara, dibagi 2 karena memancarkan lalu mantul dan di terima
// unsigned berguna agar nilai jarak tidak mines saat tidak ada object di depan sensor
//tampilkan jarak
Serial.println(jarak); // untuk menampilkan jarak(cm) dalam serial monitor
// Logika agar lampu dan buzzer menyala sesuai jarak
if (jarak <=10){ // jika jarak kurang sama dengan 10 cm
digitalWrite(pink, HIGH); // led kuning menyala
digitalWrite(pinh, HIGH); // led hijau menyala
digitalWrite(pinb, HIGH); // led biru menyala
digitalWrite(pinm, HIGH); // led merah menyala
tone(pinbuz, 900); // nyalakan buzzer dalam frekuensi tone
delay(300); // durasi tone
noTone(pinbuz); // matikan buzzer
delay(10); // delay antar tone
}
else if (jarak > 10 && jarak <= 20) { // jika jarak lebih 10 cm dan kurang dari sama dengan 20 cm "11-20"
digitalWrite(pink, HIGH); // led kuning menyala
digitalWrite(pinh, HIGH); // led hijau menyala
digitalWrite(pinb, HIGH); // led biru menyala
digitalWrite(pinm, LOW); // led merah mati
tone(pinbuz, 900); // nyalakan buzzer dalam frekuensi tone
delay(300); // durasi tone
noTone(pinbuz); // matikan buzzer
delay(200); // delay antar tone
}
else if (jarak > 20 && jarak <= 30) { // jika jarak lebih 20 cm dan kurang dari sama dengan 30 cm "21-30"
digitalWrite(pink, HIGH); // led kuning menyala
digitalWrite(pinh, HIGH); // led hijau menyala
digitalWrite(pinb, LOW); // led biru mati
digitalWrite(pinm, LOW); // led merah mati
tone(pinbuz, 800); // nyalakan buzzer dalam frekuensi tone
delay(300); // durasi tone
noTone(pinbuz); // matikan buzzer
delay(500); // delay antar tone
}
else if (jarak > 30 && jarak <= 40) { // jika jarak lebih 30 cm dan kurang dari sama dengan 40 cm "31-40"
digitalWrite(pink, HIGH); // led kuning menyala
digitalWrite(pinh, LOW); // led hijau mati
digitalWrite(pinb, LOW); // led biru mati
digitalWrite(pinm, LOW); // led merah mati
tone(pinbuz, 700); // nyalakan buzzer dalam frekuensi tone
delay(300); // durasi tone
noTone(pinbuz); // matikan buzzer
delay(800); // delay antar tone
}
else { // jika jarak lebih dari 40 cm
digitalWrite(pink, LOW); // led kuning mati
digitalWrite(pinh, LOW); // led hijau mati
digitalWrite(pinb, LOW); // led biru mati
digitalWrite(pinm, LOW); // led merah mati
}
delay(50); // waktu tunggu perulangan program selama 0.05 detik
}