Bu sensör, robotik projelerde Arduino ile kullanılan en popüler sensörlerden birisidir. Kullanımı oldukça kolaydır ve program kısmı doğru olduğu sürece 2cm – 400cm arası uzaklıkları düzgün bir şekilde ölçebilmektedir. Çalışma prensibi ise şu şekildedir: Sensörün Trig pininden uygulanan sinyal 40 kHz frekansında ultrasonik bir ses yayılmasını sağlar. Bu ses dalgası herhangi bir cisme çarpıp sensöre geri döndüğünde, Echo pini aktif hale gelir. Biz ise bu iki sinyal arasındaki süreyi ölçerek -yani sesin yankısını algılayarak- cismin sensörden uzaklığını tespit edebiliriz.
Bu uygulamadaki gibi zamana duyarlı işlemlerde, Arduino’nun timer interrupt’larını kullanan bir koda ihtiyacımız var. Bir önceki paragrafta programın düzgün çalışmasından bahsetmiştim. Eğer biz timer interrupt gibi bir metod kullanmadan süre ölçümü yaparsak, alacağımız sonuç çok verimli olmayacaktır. Bu kısım size karışık geldiyse endişe etmenize gerek yok, Arduino ile HC-SR04 sensörü düzgün bir şekilde kullanmamızı sağlayacak bir kütüphane mevcut. https://bitbucket.org/teckel12/arduino-new-ping/downloads adresinden NewPing isimli kütüphanenin en güncel halini indirip Arduino yazılımına ekliyoruz. Devre şemamız ise şu şekilde:
Bağlantımızı yaptıktan sonra, Arduino programımızı açıp Dosya>Örnekler>NewPing>NewPingExample adımlarını takip ederek örnek kodu açıyoruz. Bu koddaki #define TRIGGER_PIN 12 ve #define ECHO_PIN 11 satırları, HC-SR04 sensörümüzün Trig ve Echo pinlerinin bağlanacağı Arduino pinlerini ayarlamamızı sağlıyor. #define MAX_DISTANCE 200 satırı da sensörümüzün ölçeceği maksimum mesafayi 200 cm olarak ayarlamamızı sağlıyor. loop fonksiyonundaki delay(50) komutu, her bir ultrasonik ses göndermenin arasında 50 ms bekleme yapılmasını sağlıyor. İki ölçüm arasındaki süreyi bu komutla değiştirmemiz mümkün, dikkat etmemiz gereken ise bu iki ölçüm arasındaki minimum süre 29 ms’den daha az olmaması. Aksi takdirde bir önceki ölçümden gelen yankı ile çakışma meydana gelir ve ölçümümüz doğru bir sonuç vermez.
18.03.2019