Merhaba arkadaşlar, bu uygulamamızda HC-SR04 ultrosonik mesafe sensörüyle mesafe ölçümü yapacağız ve yapmış olduğumuz bu ölçümü kullanıcıya göstermek adına 5 adet kırmızı led ile ölçeklendireceğiz.

Malzeme Listesi:

Öncelikle HC-SR04 Ultrasonik Mesafe Sensörünün nasıl çalıştığına bakalım. Bu sensör, sahip olduğu iki gözden biri (echo gözü)  ile ultrasonik bir ses dalgası gönderir ve herhangi bir cisimden yansıyan bu ses dalgası diğer gözü (trig gözü) ile alınır. Ses sinyalinin gitmesi ve cisimden yansıma süresi kullanılarak mesafe hesaplaması yapılır. Bu sensör ile 4 metreye kadar mesafe ölçülebilir.

Şimdi aşağıda bulanan devre şemasına göre devremizi breadboard üzerine kuralım. Sensörümüzün bağlantılarına dikkat edelim. Aksi takdirde sensörümüze zarar verebiliriz.

Şimdi kodumuza geçelim.

#define trig_Pin 8
#define echo_Pin 9
long mesafe = 0;
long sure = 0;
void setup()
{
for (int i = 2; i < 7; i++)
{
pinMode(i, OUTPUT);
}
pinMode(trig_Pin, OUTPUT);
pinMode(echo_Pin, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(trig_Pin, HIGH);
delayMicroseconds(1000);
digitalWrite(trig_Pin, LOW);
sure = pulseIn(echo_Pin, HIGH);
mesafe = (sure / 29.1) / 2;
if (mesafe > 300)
mesafe = 300;
Serial.print("Olculen Mesafe = ");
Serial.print(mesafe);
Serial.println(" cm ");
delay(100);
if (mesafe > 0 && mesafe <= 10)
{
digitalWrite( 2, HIGH);
digitalWrite( 3, LOW);
digitalWrite( 4, LOW);
digitalWrite( 5, LOW);
digitalWrite( 6, LOW);
}
else if (mesafe > 10 && mesafe <= 20)
{
digitalWrite( 2, HIGH);
digitalWrite( 3, HIGH);
digitalWrite( 4, LOW);
digitalWrite( 5, LOW);
digitalWrite( 6, LOW);
}
else if (mesafe > 20 && mesafe <= 30)
{
digitalWrite( 2, HIGH);
digitalWrite( 3, HIGH);
digitalWrite( 4, HIGH);
digitalWrite( 5, LOW);
digitalWrite( 6, LOW);
}
else if (mesafe > 30 && mesafe <= 40)
{
digitalWrite( 2, HIGH);
digitalWrite( 3, HIGH);
digitalWrite( 4, HIGH);
digitalWrite( 5, HIGH);
digitalWrite( 6, LOW);
}
else
{
digitalWrite( 2, HIGH);
digitalWrite( 3, HIGH);
digitalWrite( 4, HIGH);
digitalWrite( 5, HIGH);
digitalWrite( 6, HIGH);
}
}

Gerekli pin ve değişken tanımlamalarımızı yapıyoruz.

Burada daha önce kullanmadığımız long tipindeki –9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 sayıları arasında değer alan bir değişken kullandık aslında daha önce kullanmış olduğumuz integer ile hemen hemen aynıdır. Fakat integer değişken tipinin saklama alanı yetmediği durumlarda long değişken tipi kullanılır. İhtiyaç yoksa kullanılması önerilmez. Çünkü hafıza da gereksiz şekilde yer kaplayacak ve programın daha yavaş çalışmasına sebep olabilir.

Gerekli giriş ve çıkış pinlerimizi tanımlıyoruz ve serial haberleşmemizi başlatıyoruz.

void loop() döngümüzde trig pinimizi lojik HIGH yapıyoruz ve 1000 mikro saniye geçikme veriyoruz. Bu geçmenin sonunda trig pinini lojik LOW yapıyoruz.

Sure adlı değişkenimize pulseIn(echo_Pin,HIGH) komutuyla sinyalin gidip, dönme süresini hesaplıyoruz.

mesafe = (sure / 29.1) / 2; eşitliğiyle mesafe hesaplaması yapılıyor. Buradaki 29.1 ses sinyalinin ortamda yayılma hızıyla alakalı eşitlikten ve sinyal gidiş, dönüşünden dolayı 2 kat mesafe kat ettiğinden 2 ‘ye bölünüyor. Eğer hesaplanan mesafe 300 ‘den büyük ise mesafeye 300 (Bu değerler ortama göre değişebilir.) atanıyor. Bunun sebebi belli bir mesafeden sonra sensörün aldığı gürültü oranı artmakta ve bu gürültünün  bir şekilde filtrelenmesi gerekmektedir.

Serial.print(); ile ölçülen mesafe bilgileri serial ekrana yazdırılır.

if-else yapısı ile mesafe 0 ile 10 arasında ve 10 ‘a eşit ise 1. led 10 ile 20 arasında ve 20 ‘ye eşit ise 1. ve 2. led şeklinde koşullandırılarak mevcut ledler ile kullanıcıya mesafe bilgisi 0 ile 10cm arasında verilmektedir.

Kodumuzu Arduino’ya yükledikten sonra seri ekranımızı açtığımızda yukarıdaki görseldeki gibi mesafe ölçümlerinin yapılıyor olması lazım. Eğer yapım aşamasında bir sorun ile karşılaştıysanız size yardımcı olmayı çok isteriz. Bu nedenle yorum atmaktan çekinmeyin!


Bu dersimiz işinize yaradıysa ve hoşunuza gittiyse diğer derslerimize göz atmayı unutmayın 🙂

robolinkmarket.com

1 Yorum

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz