Bu eğitimimizde Arduino Uno üzerinde Ultrasonik Mesafe Sensörü (HC-SR04) ve Buzzer kullanarak bir araçlarda bulunan park sensörüne benzer bir yapıda çalışma yapacağız.
Ultrasonik Mesafe Sensörü (HC-SR04) çalışma mantığı ses dalgaları göndererek karşısındaki nesneye evya duvara çarpan bu dalgaların geri dönüş süresini ölçer.
Bu projemizde Buzzer belirlenene mesafe aralıklarına göre farklı ses çıkaracaktır.
- 10 cm’den yakın ise Sürekli uyarı verecek.
- 10-20 cm arasında kısa kısa bip sesi
- 20-30 cm arasında daha uzun aralıklı bip sesi
- 30 cm’den uzak mesafede ise hiç ses veya uyarı vermeyecek.
NOT: GND ve 5V BreadBoard üzerinde + ve – ‘ye bağladığınızda kimi zaman enerji yetersizliğinden dolayı çalışmayabilir. Bunları direkt olarak Arduino üzerine bağlayıp deneyebilirsiniz.

#define trigPin 9
#define echoPin 10
#define buzzer 6
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
long sure;
int mesafe;
// Ultrasonik sensörden mesafeyi al
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH);
mesafe = sure * 0.034 / 2; // cm cinsinden mesafe hesaplama
Serial.print("Mesafe: ");
Serial.print(mesafe);
Serial.println(" cm");
// Mesafeye göre buzzer çaldır
if (mesafe > 0 && mesafe <= 10) {
tone(buzzer, 1000); // Yakın mesafe (10 cm'den az) - Sürekli ses
}
else if (mesafe > 10 && mesafe <= 20) {
tone(buzzer, 1000, 300); // Orta mesafe (10-20 cm) - Kısa bip sesi
delay(500);
}
else if (mesafe > 20 && mesafe <= 30) {
tone(buzzer, 1000, 100); // Uzak mesafe (20-30 cm) - Daha aralıklı bip sesi
delay(1000);
}
else {
noTone(buzzer); // Uzaksa buzzer kapalı
}
delay(200);
}
- pulseIn() fonksiyonu, bir pinin ne kadar süre HIGH veya LOW durumda kaldığını takip eder ve geçen süreyi mikrosaniye cinsinden döndürür.
Bu projede, HC-SR04 ultrasonik mesafe sensörü kullanarak araçlardaki park sensörü sisteminin basit bir prototipini oluşturacağız. Sensörün ölçtüğü mesafeye göre:
- LED’ler (yeşil/sarı/kırmızı) ile görsel uyarı
- Buzzer ile sesli uyarı vereceğiz.
Öğrenecekleriniz:
✔ HC-SR04 sensörü kullanımı
✔ Mesafe ölçme prensibi
✔ Çoklu LED kontrolü
✔ PWM ile buzzer kontrolü
Gerekli Malzemeler
| Malzeme | Adet | Açıklama |
|---|---|---|
| Arduino Uno | 1 | Temel kontrol kartı |
| HC-SR04 Ultrasonik Sensör | 1 | Mesafe ölçümü için |
| Kırmızı LED | 1 | 20cm’den yakın mesafe |
| Sarı LED | 1 | 20-50cm arası |
| Yeşil LED | 1 | 50cm’den uzak |
| 220Ω Direnç | 3 | LED koruma direnci |
| Buzzer (Pasif) | 1 | Sesli uyarı için |
| Breadboard | 1 | Devre kurulum alanı |
| Jumper Kablolar | 10-12 | Bağlantı için |
Devre Bağlantısı
Adım Adım Bağlantı Kılavuzu
- HC-SR04 Bağlantısı:
- VCC → Arduino 5V
- Trig → D12
- Echo → D11
- GND → GND
- LED Bağlantıları:
- Yeşil LED (+) → D9 → 220Ω → GND
- Sarı LED (+) → D8 → 220Ω → GND
- Kırmızı LED (+) → D7 → 220Ω → GND
- Buzzer Bağlantısı:
- (+) → D6
- (-) → GND
Devre Şeması:
5V → HC-SR04(VCC)
GND → HC-SR04(GND) → LED'ler(-) → Buzzer(-)
D12 → HC-SR04(Trig)
D11 → HC-SR04(Echo)
D9 → Yeşil LED
D8 → Sarı LED
D7 → Kırmızı LED
D6 → Buzzer(+)
Arduino Programı
// Pin tanımlamaları
const int trigPin = 12;
const int echoPin = 11;
const int buzzerPin = 6;
const int yesilLed = 9;
const int sariLed = 8;
const int kirmiziLed = 7;
// Mesafe eşik değerleri (cm)
const int UZAK_MESAFE = 50;
const int ORTA_MESAFE = 20;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(yesilLed, OUTPUT);
pinMode(sariLed, OUTPUT);
pinMode(kirmiziLed, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Mesafe ölçümü
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2; // cm cinsinden mesafe
Serial.print("Mesafe: ");
Serial.print(distance);
Serial.println(" cm");
// LED ve buzzer kontrolü
if (distance > UZAK_MESAFE) {
digitalWrite(yesilLed, HIGH);
digitalWrite(sariLed, LOW);
digitalWrite(kirmiziLed, LOW);
noTone(buzzerPin);
}
else if (distance > ORTA_MESAFE && distance <= UZAK_MESAFE) {
digitalWrite(yesilLed, LOW);
digitalWrite(sariLed, HIGH);
digitalWrite(kirmiziLed, LOW);
tone(buzzerPin, 1000, 200); // Aralıklı bip
delay(300);
}
else {
digitalWrite(yesilLed, LOW);
digitalWrite(sariLed, LOW);
digitalWrite(kirmiziLed, HIGH);
tone(buzzerPin, 2000); // Sürekli yüksek ses
}
delay(100);
}
Çalışma Prensibi
- Mesafe Ölçümü:
- Trig pini 10μs HIGH sinyali gönderir
- Sensör ultrasonik dalga yayar
- Echo pini dalganın geri dönüş süresini ölçer
distance = (süre × ses hızı) / 2formülüyle mesafe hesaplanır
- Uyarı Sistemi:
- >50cm: Yeşil LED (Güvenli)
- 20-50cm: Sarı LED + Aralıklı bip (Dikkat)
- <20cm: Kırmızı LED + Sürekli bip (Tehlike)
Sık Karşılaşılan Sorunlar
| Sorun | Çözüm |
|---|---|
| Sensör tutarsız ölçüm yapıyor | Gürültülü ortamdan uzaklaştırın |
| Buzzer çalışmıyor | Pasif buzzer kullandığınızdan emin olun |
| LED’ler yanmıyor | Bacak bağlantılarını ve dirençleri kontrol edin |
Gerçek Hayat Uygulamaları
- Araç park sensörleri
- Robotik engel algılama
- Akıllı garaj kapısı sistemleri
Sonuç
Bu projeyle Arduino’da:
✔ Gerçek dünya uygulaması geliştirmeyi
✔ Sensör verisi işlemeyi
✔ Çoklu çıkış kontrolünü
✔ Sesli-görsel uyarı sistemini öğrendik.


