Bu yazımızda Arduino ile park sensörü için program kodlayıp devre kurulumunu yapacağız.
İsterseniz bu projeden önce , Arduino ile Mesafe Ölçer(HC-SR04), Arduino ile melodi çalma ve Arduino ile Led Yakma yazılarımızı okuyabilirsiniz.
*Gerekli Malzemelerden Başlayalım.
- Breadboard (Devre Tahtası)
- LED
- 330 Ω Direnç
- HC-SR04 Ultrasonik Sensör
- Pasif Buzzer
- Jumper Kablo
- Arduino
Arduino ile Park Sensörü Devresi ve Programı

Şimdi öncelikle devremizi kuralım.
Kırmızı Led’in eksi(katot yada kısa bacak) bacağına 330ohm’luk direnci bağlayalım ve direcin diğer bacağını GND’ye bağlayalım. Led’in artı(anot yada uzun bacak) bacağını ise Arduino’nun 3 nolu dijital pinine bağlayalım.
Yeşil Led’in eksi(katot yada kısa bacak) bacağına 330ohm’luk direnci bağlayalım ve direcin diğer bacağını GND’ye bağlayalım. Led’in artı(anot yada uzun bacak) bacağını ise Arduino’nun 2 nolu dijital pinine bağlayalım.
HC-SR04‘ün Vcc bacağını Arduino’nun 5V pinine,
HC-SR04‘ün Trig bacağını Arduino’nun 9 no’lu pinine,
HC-SR04‘ün Echo bacağını Arduino’nun 8 no’lu pinine,
HC-SR04‘ün GND bacağını Arduino’nun GND pinine takalım.
Pasif buzzer’ın (+) ucunu Arduino’nun 7 no’lu pinine, diğer ucunu ise GND’ye bağlayalım.
#define buzzerPini 7 //Buzzerın bağlı olduğu 7 nolu pin "buzzerPini" olarak isimlendirildi.
#define echoPin 8 //Echo ucunun bağlı olduğu 8 nolu pin "echoPin" olarak isimlendirildi.
#define trigPin 9 //Trig ucunun bağlı olduğu 9 nolu pin "trigPin" olarak isimlendirildi.
#define ledYesil 2 //Yeşil ledin bağlı olduğu 2 nolu pin "ledYesil" olarak isimlendirildi.
#define ledKirmizi 3//Kırmızı ledin bağlı olduğu 3 nolu pin "ledYesil" olarak isimlendirildi.
void setup() {
pinMode(trigPin, OUTPUT);//trigPin isimli pin çıkış sinyali üretecek
pinMode(echoPin, INPUT);//echoPin isimli pin giriş sinyali alacak
pinMode(ledYesil, OUTPUT);//ledYesil isimli pin çıkış sinyali üretecek
pinMode(ledKirmizi, OUTPUT);//ledKirmizi isimli pin çıkış sinyali üretecek
}
void loop() {// içerisindeki komutları sürekli olarak tekrar eder.
long sure, mesafe;//long türünde sure ve mesafe olmak üzere 2 değişken tanımla
digitalWrite(trigPin, LOW);//trigPin pinini LOW(0) yap
delayMicroseconds(2);// 2 mikrosaniye bekle
digitalWrite(trigPin, HIGH);//trigPin pinini HIGH(1) yapıyor
delayMicroseconds(10);// 10 mikrosaniye bekle
digitalWrite(trigPin, LOW);//trigPin pinini LOW(0) yap
sure = pulseIn(echoPin, HIGH);//ultrasonik sinyali dinler
mesafe = (sure/2) / 29.1;//mesafeyi cm olarak hesapla
if (mesafe <4){ //Ölçülen mesafe 4cm den az ise aşağıdaki kodları çalıştır
tone(buzzerPini, 500);//500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
}
else if (mesafe >= 4 && mesafe <5){ //Ölçülen mesafe değeri 4 ile 5cm arasında ise
tone(buzzerPini, 500); //500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
delay(100); //100ms bekle
noTone(buzzerPini); //buzzer'ı durdur
digitalWrite(ledKirmizi, LOW); //Kırmızı ledi söndür
delay(100); //100ms bekle
}
else if(mesafe >= 5 && mesafe <7) {//Ölçülen mesafe değeri 5 ile 7cm arasında ise
tone(buzzerPini, 500); //500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
delay(200); //200ms bekle
noTone(buzzerPini); //buzzer'ı durdur
digitalWrite(ledKirmizi, LOW);//Kırmızı ledi söndür
delay(200); //200ms bekle
}
else if(mesafe >= 7 && mesafe <=9) {//Ölçülen mesafe değeri 7 ile 9cm arasında ise
tone(buzzerPini, 500);//500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
delay(200);//200ms bekle
noTone(buzzerPini);//Kırmızı ledi söndür
digitalWrite(ledKirmizi, LOW);//buzzer'ı durdur
delay(400); //400ms bekle
}
else//Yukarıdaki şartlar sağlanmazsa aşağıdaki kodları çalıştır
{
digitalWrite(ledKirmizi, LOW);//Kırmızı ledi söndür
digitalWrite(ledYesil, HIGH);//Yeşil ledi yak
}
}PROGRAM ADIMLARI
ADIM 1:
#define buzzerPini 7 //Buzzerın bağlı olduğu 7 nolu pin "buzzerPini" olarak isimlendirildi.
#define echoPin 8 //Echo ucunun bağlı olduğu 8 nolu pin "echoPin" olarak isimlendirildi.
#define trigPin 9 //Trig ucunun bağlı olduğu 9 nolu pin "trigPin" olarak isimlendirildi.
#define ledYesil 2 //Yeşil ledin bağlı olduğu 2 nolu pin "ledYesil" olarak isimlendirildi.
#define ledKirmizi 3//Kırmızı ledin bağlı olduğu 3 nolu pin "ledYesil" olarak isimlendirildi.#define buzzerPini 7 Burada yapılan işlemde; 7 numaralı pine buzzerPini ismini veriyorum. Bu işlemden sonra 7 numaralı pin artık buzzerPini isminde kullanılacak. Böylece kodumuz daha anlaşılır olacak.
#define echoPin 8 Burada ise 8 numaralı pine echoPin ismini veriyorum. Bu işlemden sonra 8 numaralı pin echoPin isminde kullanılacak.
#define trigPin 9 Burada ise 9 numaralı pine trigPin ismini veriyorum. Bu işlemden sonra 9 numaralı pin trigPin isminde kullanılacak.
#define ledYesil 2 Burada ise 2 numaralı pine ledYesil ismini veriyorum. Bu işlemden sonra 2 numaralı pin ledYesil isminde kullanılacak.
#define ledKirmizi 3 Burada ise 3 numaralı pine ledKirmizi ismini veriyorum. Bu işlemden sonra 3 numaralı pin ledKirmizi isminde kullanılacak.
ADIM 2:
void setup() {
pinMode(trigPin, OUTPUT);//trigPin isimli pin çıkış sinyali üretecek
pinMode(echoPin, INPUT);//echoPin isimli pin giriş sinyali alacak
pinMode(ledYesil, OUTPUT);//ledYesil isimli pin çıkış sinyali üretecek
pinMode(ledKirmizi, OUTPUT);//ledKirmizi isimli pin çıkış sinyali üretecek
}void setup() Arduino çalışmaya başladığında ilk olarak bu fonksiyonunu okur ve ön ayarları yapar.
pinMode(trigPin, OUTPUT); komutu ile trigPin pinini OUTPUT(Sinyal çıkışı) olarak ayarladık. Çünkü trigPin (9 no’lu pin) çıkış sinyali üretecek, ses dalgası gönderecek.
pinMode(echoPin, INPUT); komutu ile echoPin pinini INPUT(Sinyal girişi) olarak ayarladık. Çünkü echoPin(8 no’lu pin) giriş sinyali dinleyecek, ses dalgasını algılayacak.
pinMode(ledYesil, OUTPUT); komutu ile ledYesil pinini OUTPUT(Sinyal çıkışı) olarak ayarladık. Çünkü ledYesil(2 no’lu pin) çıkış sinyali üretecek, yani yeşil ledi yakıp söndürecek.
pinMode(ledKirmizi, OUTPUT); komutu ile ledKirmizipinini OUTPUT(Sinyal çıkışı) olarak ayarladık. Çünkü ledKirmizi(3 no’lu pin) çıkış sinyali üretecek, yani kırmızı ledi yakıp söndürecek.
ADIM 3:
void loop() {// içerisindeki komutları sürekli olarak tekrar eder.
long sure, mesafe;//long türünde sure ve mesafe olmak üzere 2 değişken tanımla
digitalWrite(trigPin, LOW);//trigPin pinini LOW(0) yap
delayMicroseconds(2);// 2 mikrosaniye bekle
digitalWrite(trigPin, HIGH);//trigPin pinini HIGH(1) yapıyor
delayMicroseconds(10);// 10 mikrosaniye bekle
digitalWrite(trigPin, LOW);//trigPin pinini LOW(0) yap
sure = pulseIn(echoPin, HIGH);//ultrasonik sinyali dinler
mesafe = (sure/2) / 29.1;//mesafeyi cm olarak hesaplaLoop() fonksiyonu Arduino çalıştığı sürece, içerisindeki komutları sürekli olarak tekrar eder.
long sure, mesafe; komutu ile long(büyük tam sayı) veri türünde sure ve mesafe olmak üzere 2 değişken tanımladık. Ses dalgasının gönderilmesi ve geri dönüşte okunması için geçen süre ile mesafeyi bulacağız. Bu nedenle bu değişkenlere ihtiyacımız olacak.
digitalWrite(trigPin, LOW); komutu trigPin pinini LOW(0) yapıyor, yani kapatıyor.
delayMicroseconds(2); komutu 2 mikrosaniye bekleme yaptırıyor.
digitalWrite(trigPin, HIGH); komutu trigPin pinini HIGH(1) yapıyor, yani ses dalgası ürettiriyor.
delayMicroseconds(10); komutu 10 mikrosaniye bekleme yaptırıyor.
digitalWrite(trigPin, LOW); komutu trigPin pinini tekrar LOW(0) yapıyor, yani kapatıyor.
Burada yapılmak istenen şey şu; trigPin 10 mikrosaniye boyunca ses dalgası üretiyor. Ardından 2 mikrosaniye kapanıyor. Sonra yine aynı işlemi sürekli olarak tekrarlıyor.
sure = pulseIn(echoPin, HIGH); komutu trigPin’in ürettiği ultrasonik sinyali dinler ve sesin gidiş dönüş süresini ölçer.
mesafe = (sure/2) / 29.1; komutu, ses hızı sabit olduğu için “ölçülen süreye göre mesafeyi hesaplar. Bu hesaplamanın nasıl yapıldığını ultrasonik sensörler yazımızdan öğrenebilirsiniz.
ADIM 4:
if (mesafe <4){ //Ölçülen mesafe 4cm den az ise aşağıdaki kodları çalıştır
tone(buzzerPini, 500);//500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
}if (mesafe <4){ komutu; ölçülen mesafe 4 cm’den küçükse aşağıdaki kodları çalıştıracaktır.
- tone(buzzerPini, 500); tone() komutu buzzer’dan ses çıkartmak için kullanılır. İçerisinde 2 adet parametre olması gereklidir. tone(Pin no, Ses Frekansı) şeklinde kullanılır. Burada buzzerPini’nin 500hz frekansında ses çıkarması sağlanıyor.
- digitalWrite(ledKirmizi, HIGH); komutu ledKirmizi pinin HIGH olasını yani yanmasını sağlıyor.
- digitalWrite(ledYesil, LOW); komutu ledYesil pinin LOW olasını yani sönmesini sağlıyor.
Bu adımda mesafe sensörü önündeki nesnenin 4 cm’den daha yakın olduğunu algılarsa buzzer sürekli olarak ses çıkartır, kırmızı led yanacak, yeşil led sönük olarak kalacak.
ADIM 5:
else if (mesafe >= 4 && mesafe <5){ //Ölçülen mesafe değeri 4 ile 5cm arasında ise
tone(buzzerPini, 500); //500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
delay(100); //100ms bekle
noTone(buzzerPini); //buzzer'ı durdur
digitalWrite(ledKirmizi, LOW); //Kırmızı ledi söndür
delay(100); //100ms bekle
}else if (mesafe >= 4 && mesafe <5){ komutu; ölçülen mesafe 4 cm’den büyük eşitse ve 5 cm’den küçükse aşağıdaki kodları çalıştıracaktır.
- tone(buzzerPini, 500); Burada buzzerPini’nin 500hz frekansında ses çıkarması sağlanıyor.
- digitalWrite(ledKirmizi, HIGH); komutu ledKirmizi pinin HIGH olasını yani yanmasını sağlıyor.
- digitalWrite(ledYesil, LOW); komutu ledYesil pinin LOW olasını yani sönmesini sağlıyor.
- delay(100); komutu 100ms bekleme sağlıyor.
- noTone(buzzerPini); komutuyla buzzer ses çıkarmayı durdurur. noTone(Pin no) şeklinde kullanılır.
- digitalWrite(ledKirmizi, LOW); komutu ledKirmizi pinin LOW olasını yani sönmesini sağlıyor.
- delay(100); komutu 100ms bekleme sağlıyor.
Bu adımda mesafe sensörü önündeki nesnenin 4 cm ile 5 cm civarında olduğunu algılarsa buzzer sürekli değil, 100ms bekleme yaparak ses çıkartır. Yani her 100ms’de bir buzzer 100ms ses çıkartır, kırmızı led yanacak, yeşil led sönük olarak kalacak.
ADIM 6:
else if(mesafe >= 5 && mesafe <7) {//Ölçülen mesafe değeri 5 ile 7cm arasında ise
tone(buzzerPini, 500); //500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
delay(200); //200ms bekle
noTone(buzzerPini); //buzzer'ı durdur
digitalWrite(ledKirmizi, LOW);//Kırmızı ledi söndür
delay(200); //200ms bekle
}else if (mesafe >= 5 && mesafe <7){ komutu; ölçülen mesafe 5 cm’den büyük eşitse ve 7 cm’den küçükse aşağıdaki kodları çalıştıracaktır.
- tone(buzzerPini, 500); Burada buzzerPini’nin 500hz frekansında ses çıkarması sağlanıyor.
- digitalWrite(ledKirmizi, HIGH); komutu ledKirmizi pinin HIGH olasını yani yanmasını sağlıyor.
- digitalWrite(ledYesil, LOW); komutu ledYesil pinin LOW olasını yani sönmesini sağlıyor.
- delay(200); komutu 200ms bekleme sağlıyor.
- noTone(buzzerPini); komutuyla buzzer ses çıkarmayı durdurur.
- digitalWrite(ledKirmizi, LOW); komutu ledKirmizi pinin LOW olasını yani sönmesini sağlıyor.
- delay(200); komutu 200ms bekleme sağlıyor.
Bu adımda mesafe sensörü önündeki nesnenin 5 cm ile 7 cm civarında olduğunu algılarsa buzzer 200ms bekleme yaparak ses çıkartır. Yani her 200ms’de bir buzzer 200ms ses çıkartır., kırmızı led yanacak, yeşil led sönük olarak kalacak.
ADIM 7:
else if(mesafe >= 7 && mesafe <=9) {//Ölçülen mesafe değeri 7 ile 9cm arasında ise
tone(buzzerPini, 500);//500Hz frekansta buzzerı çal
digitalWrite(ledKirmizi, HIGH); //Kırmızı ledi yak
digitalWrite(ledYesil, LOW); //Yeşil ledi söndür
delay(200);//200ms bekle
noTone(buzzerPini);//Kırmızı ledi söndür
digitalWrite(ledKirmizi, LOW);//buzzer'ı durdur
delay(400); //400ms bekle
}else if (mesafe >= 7 && mesafe <=9){ komutu; ölçülen mesafe 7 cm’den büyük eşitse ve 9 cm’den küçük eşitse aşağıdaki kodları çalıştıracaktır.
- tone(buzzerPini, 500); Burada buzzerPini’nin 500hz frekansında ses çıkarması sağlanıyor.
- digitalWrite(ledKirmizi, HIGH); komutu ledKirmizi pinin HIGH olasını yani yanmasını sağlıyor.
- digitalWrite(ledYesil, LOW); komutu ledYesil pinin LOW olasını yani sönmesini sağlıyor.
- delay(200); komutu 200ms bekleme sağlıyor.
- noTone(buzzerPini); komutuyla buzzer ses çıkarmayı durdurur.
- digitalWrite(ledKirmizi, LOW); komutu ledKirmizi pinin LOW olasını yani sönmesini sağlıyor.
- delay(400); komutu 200ms bekleme sağlıyor.
Bu adımda mesafe sensörü önündeki nesnenin 7 cm ile 9 cm civarında olduğunu algılarsa buzzer 400ms bekleme yaparak ses çıkartır. Yani her 400ms’de bir buzzer 200ms ötecek, kırmızı led yanacak, yeşil led sönük olarak kalacak.
ADIM 8:
else//Yukarıdaki şartlar sağlanmazsa aşağıdaki kodları çalıştır
{
digitalWrite(ledKirmizi, LOW);//Kırmızı ledi söndür
digitalWrite(ledYesil, HIGH);//Yeşil ledi yak
}else { komutu if’deki şart sağlanmazsa çalışacaktır. Yani mesafe değeri 9 cm’den fazlaysa aşağıdaki komutlar çalışacaktır.
- digitalWrite(ledKirmizi, LOW); komutu ledKirmizi pinin LOW olmasını yani sönmesini sağlıyor.
- digitalWrite(ledYesil, HIGH); komutu ledYesil pinin HIGH olmasını yani yanmasını sağlıyor.
Bu adımda mesafe sensörü önündeki nesnenin 9 cm’den uzak olduğunu algılarsa, buzzer ses çıkartmaz. Kırmızı led söner, yeşil led yanar.


Reply