Print this page
HC SR04 Ultrasonik Mesafe Sensörü, arduino ve mblock kodları (Arduino Dersleri, 9)

HC SR04 Ultrasonik Mesafe Sensörü, arduino ve mblock kodları (Arduino Dersleri, 9) Featured

Rate this item
(3 votes)

Bu dersimizde Ultrasonik Mesafe Sensörü kullanımıyla ilgili temel bir uygulama yapacağız. Seri port ekranından sensörün önündeki mesafeyi takip edeceğiz. Ve belirli bir mesafenin (35cm) altına düştüğünde ise ledimizi yakacağız.

Gerekli Malzemeler

1 Adet  Arduino Uno R3
1 Adet  Breadboard
1 Adet HC SR04 Ultrasonik Mesafe Sensörü
1 Adet Led
1 Adet Direnç (220-330ohm)
6 adet Jumper Kablo (4DE, 2EE)

HC SR04 Ultrasonik Mesafe Sensörü nedir?

Arduino projelerde en çok kullanılan bu sensör ses dalgalarıyla önündeki engelleri tespit edebilmektedir. 2cm ile 400cm arasındaki engelleri tespit edip, mesafeleri ölçebilmektedir. Trig pininden çıkan ses sinyali, echo pinine geri gelmektedir. Bu sinyalin trig pininden çıkışı ile echo pinine gelişi arasındaki süreyi hesaplayarak, engelle sensör arasındaki uzaklık hesaplanabilmektedir.

HC SR04 Ultrasonik Mesafe Sensörü Kullanımı Devresi

HC SR04 Ultrasonik Mesafe Sensöründe yer alan gnd bacağını, arduinoda bulunan gnd pinine, sensördeki vcc pinini arduinodaki 5V pinine bağlıyoruz.  Trig pinini 7, echo pinini 8 numaralı pinlere bağladık.

HC SR04 Ultrasonik Mesafe Sensörü Arduino Kodları

Öncelikle trig, echo ve led pinlerimizi tanımladık. Mesafe ve sure isimli değişkenlerimizi tanımladık. Setup kısmında trig ve ledi çıkış , echo pinini giriş olarak belirttik. Ve loop kısmına geldiğimizde trig pininden ses sinyali göndermek için trig pinine güç veriyoruz.  Çok kısa bir süre (saniyenin milyonda biri, bir mikrosaniye kadar) sonra gücü kesiyoruz. Eğer sensörün trig pin aracılığıyla gönderdiği ses karşıda bir engele çarparsa, geri dönüyor ve echo pinine güç veriyor. Şimdi yapmamız gereken ise echo pininin ne zaman HIGH durumundan LOW durumuna döndüğünü öğrenmek. Burada pulseIn komutu devreye giriyor.
pulseIn Komutu pindeki gücün yüksek ya da düşük olduğunu takip etmek için kullanılır. pulseIn(echopinimiz,HIGH) dersek echo pinimizin HIGH olduğu anda bir kronometre başlatır ve LOW olana dek bu kronometre devam eder. Yani kısaca echopininin ne kadar HIGH durmunda kaldığını bize mikrosaniye birimiyle verir.
O halde sure= pulseIn(echopinimiz,HIGH)  diyerek süreyi hesaplamış oluyoruz.
Bu bilgilerden sonra mesafeyi hesaplayalım
mesafe=(sure/2)/29.1 Burada süreyi ikiye bölmemizin nedeni, sure değişkeni sinyalin gidip ve dönüş süresinin toplamını ifade ediyordu. 29.1 ise sesin saniyede havada yayılma hızı. Bu sayının nereden geldiğini merak edenler sayfa sonundaki bağlantıdan ayrıntılı bir şekilde öğrenebilirsiniz.

 

#define echopinimiz 8
#define trigpinimiz 7
#define led 2
int mesafe=0;
int sure=0;
void setup() {
pinMode(trigpinimiz, OUTPUT);
pinMode(echopinimiz, INPUT);
pinMode (led,OUTPUT);
Serial.begin(9600);
}
 
void loop() {
digitalWrite(trigpinimiz,HIGH);
//trig pinininden sinyal verdik dışarı
delayMicroseconds(1000) ; //saniyenin milyonda biri
digitalWrite(trigpinimiz,LOW);
sure=pulseIn(echopinimiz,HIGH);
mesafe=(sure/2)/29.1;
Serial.println(mesafe);
delay(250);
if (mesafe<35){
  digitalWrite(led,HIGH);
}
 else {

  digitalWrite(led,LOW);}
}

 

HC SR04 Ultrasonik Mesafe Sensörü Mblock Kodları

Mblock V5 beta sürümünde olduğu için, Mblock V3 için de kodlar oluşturuldu.
Mblock V3te seri ekranı açmak için, kodu arduinoya yükledikten sonra tekrar Bağlan Menüsünden Com1 (ilgili port) portuna bağlanı tıklamanız gerekebilir. Ve sağ alt kısımda bulunan binary code kısmını harf olarak seçerseniz istediğiniz  ekran yazılarını okuyabilirsiniz.
Mblcok V5 içinse serial ekran çıktısını bulamadım açıkçası, varsa bi yöntemi veya bulan olursa yorum yazarsa sevinirim :)

 

 

Projeyle ilgili bir not: Bu uygulamada serial ekrandan değerleri rahat okuyabilmek için delay(250) veya 0.5 saniye bekle şeklinde bir komut kullandık. Bu programın işleyişini, sensörün veri alışverişini geciktiren bir durumdur. Ekrana yazıyor ve belirttiğimiz süre kadar programın akışını durduruyor. Buradaki değeri 5 saniye yaptığınızda durum biraz daha anlaşılacaktır. O yüzden proje bitiminde bu kodlarla bir uygulama yapacaksanız serial ekran değerlerine ihtiyacımız olmayacağı için bu kısımları kaldırabiliriz.

29.1 değerinin nereden geldiğini merak edenler için ayrıntılı ve güzel, basit anlatım.
Lezzetli Robot Tarifleri
https://youtu.be/0Vxs9ISmEm8?t=586

Share:

Latest from RAM