// Alarm Parkir Mobil
// Nama : Khazim Fikri Al-Fadhli
// NIM : 20.240.0007
#include "pitches.h" // Memanggil Note Nada
#define SPEAKER_PIN 8 // Mendefinisikan pin buzzer
#define ECHO_PIN 6 // Mendefinisikan pin echo sensor ultrasonic
#define TRIG_PIN 5 // Mendefinisikan pin trigger sensor ultrasonic
#define BUTTON_PIN 7 // Mendefinisikan pin push button
int alarm_tone = NOTE_G5; // Mendefinisikan note G5 sebagai bunyi buzzer
int pin_led_red = 4; // Mendifinisikan pin lambu LED Merah
int pin_led_yellow = 3; // Mendifinisikan pin lambu LED Kuning
int pin_led_green = 2; // Mendifinisikan pin lambu LED Hijau
int status = 1; // Mendefinisikan status alat
void setup(){
pinMode(SPEAKER_PIN, OUTPUT); // Mengatur pin buzzer sebagai output
pinMode(TRIG_PIN, OUTPUT); // Mengatur pin trigger sensor ultrasonic sebagai output
pinMode(ECHO_PIN, INPUT); // Mengatur pin echo sensor ultrasonic sebagai input
pinMode(pin_led_red, OUTPUT); // Mengatur pin LED Merah sebagai output
pinMode(pin_led_yellow, OUTPUT); // Mengatur pin LED Kuning sebagai output
pinMode(pin_led_green, OUTPUT); // Mengatur pin LED Hijau sebagai output
pinMode(7, INPUT); // Mengatur pin button sebagai input
}
float jarak_cm(){ // Membuat fungsi pendeteksi jarak dalam satuan CM
digitalWrite(TRIG_PIN, LOW); // Membuat pin trigger sensor low
delayMicroseconds(2); // melakukan delay selama 2 micro second
digitalWrite(TRIG_PIN, HIGH); // Membuat pin trigger sensor high
delayMicroseconds(10); // melakukan delay selama 10 micro second
digitalWrite(TRIG_PIN, LOW); // Membuat pin trigger sensor low
int duration = pulseIn(ECHO_PIN, HIGH); // Menghitung durasi dengan menghidupkan pin echo
return duration * 0.034 / 2; // menghitung jarak dalam satuan CM dengan perhitungan berdasarkan durasi
}
void loop(){
if (digitalRead(BUTTON_PIN) == HIGH){ // Jika tombol ditekan maka
Serial.println(status); // Menampilkan status alat saat tombol ditekan
if (status == 1){ // jika status alat aktif maka
status = 0; // status alat akan di non-aktifkan
delay(100); // membuat delay untuk perubahan status
} else { // jika status alat non-aktif maka
status = 1; // status alat akan di aktifkan
delay(100); // membuat delay untuk perubahan status
}
}
if (status == 1){ // jika status alat aktif maka
float cm = jarak_cm(); // mengambil nilai jarak dalam satuan CM yang ditangkap sensor
if(cm < 10){ //jika jarak < 10 cm maka
digitalWrite(SPEAKER_PIN,HIGH); // buzzer menyala selama delay
tone(SPEAKER_PIN, alarm_tone); // mengubah bunyi buzzer
digitalWrite(pin_led_red, HIGH); // Menyalakan LED Merah
digitalWrite(pin_led_yellow, LOW); // Mematikan LED Kuning
digitalWrite(pin_led_green, LOW); // Mematikan LED Hijau
delay(50); // membuat delay 50 ms
digitalWrite(SPEAKER_PIN,LOW); // buzzer mati selama delay
digitalWrite(pin_led_red, LOW); // Mematikan LED Merah
noTone(SPEAKER_PIN); // mematikan bunyi tone buzzer
delay(100); // membuat delay 100ms
}
else if (cm < 30){ //jika jarak < 30 cm maka
digitalWrite(SPEAKER_PIN,HIGH); // buzzer menyala selama delay
tone(SPEAKER_PIN, alarm_tone); // mengubah bunyi buzzer
digitalWrite(pin_led_red, HIGH); // Menyalakan LED Merah
digitalWrite(pin_led_yellow, LOW); // Mematikan LED Kuning
digitalWrite(pin_led_green, LOW); // Mematikan LED Hijau
delay(100); // membuat delay 100 ms
digitalWrite(SPEAKER_PIN,LOW); // buzzer mati selama delay
digitalWrite(pin_led_red, LOW); // Mematikan LED Merah
noTone(SPEAKER_PIN); // mematikan bunyi tone buzzer
delay(200); // membuat delay 200ms
}
else if(cm < 70){ //jika jarak < 70 cm maka
digitalWrite(SPEAKER_PIN,HIGH); // buzzer menyala selama delay
tone(SPEAKER_PIN, alarm_tone); // mengubah bunyi buzzer
digitalWrite(pin_led_red, LOW); // Mematikan LED Merah
digitalWrite(pin_led_yellow, HIGH); // Menyalakan LED Kuning
digitalWrite(pin_led_green, LOW); // Mematikan LED Hijau
delay(250); // membuat delay 250 ms
digitalWrite(SPEAKER_PIN,LOW); //buzzer mati selama delay
digitalWrite(pin_led_yellow, LOW); // Mematikan LED Kuning
noTone(SPEAKER_PIN); // mematikan bunyi tone buzzer
delay(400); // membuat delay 400ms
}
else if(cm < 150){ //jika jarak < 150 cm maka
digitalWrite(SPEAKER_PIN,HIGH); //buzzer menyala selama delay
tone(SPEAKER_PIN, alarm_tone); // mengubah bunyi buzzer
digitalWrite(pin_led_red, LOW); // Mematikan LED Merah
digitalWrite(pin_led_yellow, LOW); // Mematikan LED Kuning
digitalWrite(pin_led_green, HIGH); // Menyalakan LED Hijau
delay(500); // membuat delay 500 ms
digitalWrite(SPEAKER_PIN,LOW); //buzzer mati selama delay
digitalWrite(pin_led_green, LOW); // Mematikan LED Hijau
noTone(SPEAKER_PIN); // mematikan bunyi tone buzzer
delay(700); // membuat delay 700ms
}
}
}
// Alarm Parkir Mobil
// Nama : Khazim Fikri Al-Fadhli
// NIM : 20.240.0007