//ALARM BERBASIS SENSOR GELOMBANG ULTRASONIK
//UNTUK MENDETEKSI ORANG YANG MELEWATI PINTU
// (source: TECH DUDE LK on YouTube, with modifications)
//definisi kegunaan pin
#define trigerPin 12
#define echoPin 13
#define ledPin 2
#define speakerPin 11
#define pitch 2000
#define kecepatanBunyi 0.0343 // dalam satuan cm/ms
//deklarasi variabel-variabel yg dibutuhkan
double durasi, jarak;
void setup() {
//setup untuk Sensor
Serial.begin(9600); //meng-set baud rate (kecepatan transmisi data)
pinMode(trigerPin, OUTPUT); //mengirimkan gel. ultrasonik
pinMode(echoPin, INPUT); //menerima gel. ultrasonik
//setup untuk LED
pinMode(ledPin, OUTPUT);
//setup untuk Speaker
pinMode(speakerPin, OUTPUT);
}
void loop() {
//loop untuk bekerjanya Sensor (setiap beberapa waktu)
digitalWrite (trigerPin, LOW); //trig tdk mengirim sinyal
delayMicroseconds(2);
digitalWrite(trigerPin, HIGH); //trig mengirim sinyal lagi
delayMicroseconds(10);
//mendapatkan durasi gelombang ultrasonik sejak awal
//dikirim oleh trig-diterima oleh echo
durasi = pulseIn(echoPin, HIGH);
//mengkalkulasi jarak dengan rumus
jarak = (durasi * kecepatanBunyi) / 2;
// dibagi 2, karena gelombang ultrasonik dipantulkan sehingga jarak
// yang ditempuh sebenarnya 2 kali dari perpindahan
//anggap lebar pintu = 100 cm
//jika orang melewati pintu,
//alarm akan berbunyi dan lampu akan berkedip
if(jarak < 100){
digitalWrite(ledPin, HIGH);
tone(speakerPin, pitch);
delay(300);
digitalWrite(ledPin, LOW);
noTone(speakerPin);
delay(1000);
}
//jika tidak ada orang yang lewat,
//alarm akan tetap diam dan lampu tetap mati
else {
digitalWrite(ledPin, LOW);
noTone(speakerPin);
}
}