// Nama : Ghania Fayyaza Safwa
// Kelas : XI-4
// Nama Alat:
// Ultrasonic Parking Sensor v1
// Menggunakan Sensor HC-SR04, buzzer, dan LED
// Deskripsi:
// Semakin dekat jarak, buzzer dan LED akan menyala semakin cepat
//---------------------------------------------------
// Referensi:
// 1) Video: "How to create LED chaser project using Arduino - Wokwi Embedded Systems Simulator" by @embedded-academy on YouTube
// 2) Video: "Theft Alarm Indicator in Arduino - Online Simulation in Wokwi Simulator" by @techdudelk on YouTube
//---------------------------------------------------
// definisi kegunaan pin
const int BUZZER_PIN = 4;
const int TRIG_PIN = 3;
const int ECHO_PIN = 2;
// deklarasi variabel & konstanta
const float kecepatanBunyi = 0.0343; //~CM/MIKROSEKON
double waktu, jarak;
float jedaLampu, jedaInterval;
void setup() {
Serial.begin(9600);
//setup semua LED
for(int i = 13; i >= 5; i--){
pinMode(i, OUTPUT);
}
//setup buzzer
pinMode(BUZZER_PIN, OUTPUT);
//setup sensor ultrasonik
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
//mengirimkan gelombang ultrasonik
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(2);
//mendapatkan durasi waktu yang diperlukan gelombang (dari awal dikirim-diterima)
waktu = pulseIn(ECHO_PIN, HIGH); //~MIKROSEKON
//menghitung jarak dengan rumus pantulan gelombang
jarak = (waktu * kecepatanBunyi) / 2; //~CM
//misal jarak maksimal terdeteksi: 200 cm
if (jarak <= 200) {
//lampu berkedip satu persatu
//dan buzzer bersuara
tone(BUZZER_PIN, 1500);
for(int i = 13; i >= 5; i--){
digitalWrite(i, HIGH);
jedaLampu = jarak * 0.5; //atur durasi
delay(jedaLampu);
}
noTone(BUZZER_PIN);
for(int i = 13; i >= 5; i--){
digitalWrite(i, LOW);
jedaLampu = jarak * 0.5; //atur durasi
delay(jedaLampu);
}
//delay
jedaInterval = pow(jarak, 1.1); //atur durasi
delay(jedaInterval);
}
else {
//semua lampu mati
for (int i = 13; i >= 5; i--) {
digitalWrite(i, LOW);
}
//buzzer mati
noTone(BUZZER_PIN);
}
}