Arduino ile mesafe sensörü kullanımı; engelden kaçan robotlardan akıllı park sensörlerine, endüstriyel seviye ölçüm sistemlerinden hobi amaçlı interaktif projelere kadar son derece geniş bir kullanım alanına sahiptir. Bu popüler ve ekonomik sensör sayesinde; gerçek zamanlı mesafe ölçümü yapabilir, cisim algılama sistemleri kurabilir ve hatta servo motor yardımıyla kendi mini radar sisteminizi hayata geçirebilirsiniz.
Bu içerikten önce Sensör Nedir? ve Sensör Rehberi içeriğimize göz atmak isteyebilirsiniz.
Rehberimizin ilerleyen bölümlerinde, sadece mesafe ölçmekle kalmayıp, Processing görsel programlama dili kullanarak tıpkı askeri sistemlerdeki gibi ekranlı ve grafiksel bir sonar/radar arayüzü tasarlayacağız. İşlemlere geçmeden önce donanımımızı yakından tanımakla başlayalım:
HC-SR04 Ultrasonik Mesafe Sensörü, insan kulağının duyamayacağı 40.000 Hz (40 kHz) frekansında yüksek frekanslı ses dalgaları yayarak çalışır. Gönderilen bu ses dalgaları yolculuğu esnasında bir engele çarptığında yansıyarak sensörün alıcı modülüne geri döner. Dalganın çıkış ve dönüş süreleri arasındaki fark (seyahat süresi) ile ses hızını çarparak aradaki mesafeyi milimetrik hassasiyetle hesaplayabiliriz.
Ultrasonik Mesafe Sensörü Nasıl Çalışır?

Sensörün ultrasonik ses sinyalini başlatması için Trig (Tetikleme) pinine Arduino üzerinden en az 10 mikrosaniye (µs) süresince lojik HIGH (+5V) darbesi (pulse) uygulamamız gerekir. Bu tetiklemenin ardından sensör, havada ses hızında ilerleyen 8 döngülük bir ultrasonik sonik patlama yayımlar. Gönderilen dalga bir yüzeyden sekip geri döndüğünde Echo (Yankı) pini aktifleşir. Echo pini, ses dalgasının havada katettiği toplam gidiş-dönüş süresini mikrosaniye (µs) cinsinden lojik HIGH durumunda kalarak bize iletir.

Mesafe Hesaplama Matematiği:
Sesin oda sıcaklığındaki yayılma hızı yaklaşık 340 m/s’dir. Bunu mikrosaniye ve santimetre cinsine dönüştürürsek 0.034 cm/µs değerini elde ederiz. Örneğin, sensörün önündeki bir nesne 20 cm uzaklıkta olsun. Sesin bu mesafeyi katetmesi gidiş-dönüş dahil toplam 40 cm yol demektir ve yaklaşık 1176 mikrosaniye sürer. Echo pininden okunan seyahat süresi (travel time) verisi her zaman gidiş ve dönüşü kapsadığı için, net mesafeyi bulmak için elde edilen süreyi 0.034 ile çarpıp 2’ye bölmemiz gerekir:
$$\text{Mesafe (cm)} = \frac{\text{Echo Süresi (µs)} \times 0.034}{2}$$
- Fiziksel kablo bağlantılarını aşağıdaki şemaya uygun şekilde ekmek tahtası (breadboard) üzerinde hazırlayın.
- Arduino IDE programını açın ve projenize uygun olan kod bloklarını yükleyin.
- Araçlar > Kart menüsünden kullandığınız geliştirme kartını (örn: Arduino Uno) seçin.
- Araçlar > Port sekmesinden kartınızın bağlı olduğu sanal COM portunu seçin.
- “Yükle” butonuna basarak kodu mikrodenetleyiciye yükleyin.
- Ölçüm sonuçlarını anlık izlemek için Seri Port Ekranını (Serial Monitor) açın ve baud hızını 9600 olarak ayarlayın.
Devre Bağlantı Şeması

Arduino ile Mesafe Sensörü Program Kodları
Aşağıda iki farklı kod şablonu yer almaktadır. İlk kod verileri doğrudan bilgisayar üzerinden Seri Monitör’de görmenizi sağlar. İkinci kod ise verileri 16×2 karakter LCD ekranda dinamik olarak görüntüler.
Seçenek 1: Seri Monitör Çıkışlı Temel Kod
Seçenek 2: 16×2 LCD Ekran Destekli Gelişmiş Kod
Processing ile Görsel Radar (Sonar) Yapımı
Gerçek bir radar projesi tasarlamak için mesafe sensörünün sabit durmaması ve çevreyi taraması gerekir. Bunu sağlamak için HC-SR04 sensörünü bir mini servo motorun (SG90) üzerine monte edeceğiz. Kod yardımıyla servo motoru 0 ile 180 derece arasında otomatik döndürerek maksimum 4.5 metre menzile sahip bir sonar alanı oluşturacak ve elde edilen koordinatları Processing arayüzünde yeşil bir radar ekranına dönüştüreceğiz.
Gerekli Malzemeler
- Arduino UNO Geliştirme Kartı
- HC-SR04 Ultrasonik Sensör
- SG90 Servo Motor
- Breadboard ve Jumper Kablolar
- Sensörü servo koluna sabitlemek için aparat veya çift taraflı bant
Radar Devre Şeması


Arduino Radar Yazılımı
Aşağıdaki Arduino kodu, servo motoru sürekli olarak 15’er derecelik adımlarla sağa ve sola döndürürken her açıda mesafe verisini ölçer ve bu bilgiyi Seri Port üzerinden Processing yazılımının okuyabileceği formatta gönderir:
Processing Radar Görselleştirme Yazılımı
Processing programını bilgisayarınıza kurup çalıştırdıktan sonra aşağıdaki kodu yükleyin. Yazılım, Arduino’dan gelen açı ve mesafe verilerini eş zamanlı olarak okuyarak harika bir radar arayüzü çizecek ve engelleri kırmızı çizgilerle işaretleyecektir:
Uzmanından Donanım İpuçları (Troubleshooting):
1. Besleme Voltajı: HC-SR04 sensörü kararlı çalışmak için net +5V beslemeye ihtiyaç duyar. Eğer sensörü 3.3V çıkışlı bir geliştirme kartına (örn: ESP32 veya NodeMCU) doğrudan lojik dönüştürücü olmadan bağlarsanız, ölçüm menzili ciddi şekilde düşer veya sensör sürekli 0cm/sıfır hata çıktısı verir.
2. Yutulma ve Dağılma Hataları: Ultrasonik sensörler ses dalgalarıyla çalıştığı için pamuk, yün, pelüş oyuncak gibi yumuşak veya pürüzlü yüzeyler ses dalgasını emerek yankı yapmasını engeller. Bu gibi durumlarda hatalı ölçümlerle karşılaşabilirsiniz.
3. pulseIn() Bloklama Sorunu: Standart pulseIn(echoPin, HIGH) fonksiyonu eğer engel yoksa ses dalgasının dönmesini 1 saniyeye kadar bekleyerek işlemciyi bloke edebilir. Bunun önüne geçmek için koda zaman aşımı limiti ekleyerek (örn: pulseIn(echoPin, HIGH, 30000) – 30ms limit) işlemci tıkanmalarını engelleyebilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.
