Arduino ile mesafe sensörü kullanarak kendi dijital metrenizi yapabileceğinizi biliyor muydunuz? Arduino dünyasına yeni giriş yapan biriyseniz bu harika başlangıç projesi tam size göre! Bu blog yazımızda size sırasıyla; gereken malzemeler, bağlantı şeması ve Arduino kodlarını anlatacağız.
Gereken malzemeler yalnızca bu kadar. Ürünlerin isimlerine tıklayarak satın alma sayfalarına ulaşabilirsiniz.
Projemizde ölçüm yapmamızı sağlayan sensör olan HC-SR04, ultrasonik mesafe sensörüdür. Çalışma mantığı olarak ultrasonik ses dalgaları yayar ve bu dalgaları geri toplar. Gönderilen ultrasonik ses dalgaları bir yüzeye çarptıktan sonra geri dönerler. Geri dönen dalgaları yakalayan bu sensör elde ettiği verileri Arduino'ya aktarır. Arduino'da işlenen bu veriler ölçülen değerlerin santimetre cinsinden verilere dönüştürülmesi ile anlamlı hale gelir. Bu şekilde dijital bir metre elde etmiş oluruz. İşte Arduino ile Mesafe ölçümü yapmanın teknik mantığı bu şekildedir.
HC-SR04 mesafe ölçümünü fizik derslerinde gördüğümüz bir formülü esas alarak gerçekleştirir. Mesafe = Hız X Zaman. Bu förmülü baz alarak gönderdiği sinyalin kendine geri ulaşımı ile veri elde eder. Elbette mesafesi sınırsız değildir. Bu uygun fiyatlı ve kullanışlı sensör 2-400cm arası mesafede ölçüm yapabilmektedir.
Öncelikle Arduino ve sensörü bu şekilde bir bağlantı ile birleştirmemiz gerekiyor. Aşağıda vereceğimiz kodlar bu bağlantı baz alınarak oluşturulmuştur. Farklı bir pine bağlantı yapıldığı taktirde proje başarısız olacaktır. Ancak tabi ki farklı bir bağlantı yapıp kodları buna göre düzenlerseniz orası ayrı. :)
Aşağıdaki kodları kullanarak ekransız bir şekilde Arduino serial port ekranında ölçeceğiniz mesafeyi görebilirsiniz.
#define trigPin 10
#define echoPin 13
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
float duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) * 0.0344;
if (distance >= 400 || distance <= 2){
Serial.print("Distance = ");
Serial.println("Out of range");
}
else {
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
delay(500);
}
Buradaki bağlantı şemasından faydalanarak ekranı az önce kurduğumuz sisteme dahil ediyoruz. Ardından aşağıdaki kodu kullanarak ölçeceğimiz mesafeyi ekranda görüntüleyebiliyoruz.
#include
#define trigPin 10
#define echoPin 13
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
float duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) * 0.0344;
if (distance >= 400 || distance <= 2){
lcd.print("Out of range");
delay(500);
}
else {
lcd.print(distance);
lcd.print(" cm");
delay(500);
}
delay(500);
lcd.clear();
}
Arduino ile mesafe ölçümü projesinin sonuna geldik. Buna benzer pek çok benzer uygulama için Motorobit'i takipte kalın!