Arduino ile proje yapmaya devam ediyoruz. Bu yazımızda mesafe sensöründen gelen değeri LCD ekranda göstereceğiz. Mesafe sensörü olarak HC-SR04′ kullanacağız.
HC-SR04 Kullanımı
HC-SR04, üzerinde yer alan mikrofon ve hoparlörden ibaret olan bir mesafe sensörüdür. Hoparlörden çıkan ses dalgaları çarpıp geri döner ve mikrofon bu sesleri aldığı zaman tetiklenir. Aradan geçen zamana bağlı olarak mesafe hesaplanır.
Hc-SR04 ile doğru ölçümler alabilmek için ses dalgalarının çarpıp yansıması gerektiğini unutmayalım. Bunun için mesafe sensörünü mesafesini ölçeceğimiz alana paralel olarak konumlandırmak gerekmektedir.
Hc-SR04’te 4 pin bulunmaktadır. Bu 4 pinden iki tanesi standarttır. GND pini arduinodaki GND pinlerinden herhangi birine bağlanırken, VCC pini ise arduino üzerinde yer alan 5v çıkışlarından herhangi birine bağlanabilir. Geriye iki kalan echo ve trig pinleri ise arduino üzerindeki digital pinlere bağlanmalıdır.
Mesafe sensörtü üzerinde echo giriş pini iken echo çıkış pinidir. Dolayısı ile bunu arduino kodlarımıza yazmamız gerekmektedir.
i2C LCD Kullanımı
İ2C Haberleşmesi sayesinde lcd ekranın kullanımı gayet basittir. Uygun kütüphane sayesinde kolaylıkla kullanılabilir. Yapmamız gereken şey LCD ekran üzerinde yer alan VCC pinini arduinodaki 5volt pinine, GND pinini arduino üğzerindeki GND pinini, SDA pinini Arduino unodaki A4 pinine ve SCL pinini ise A5 pinine takmaktır. Sonrasında kütüphanemizi projemize dahil ederek devam edelim.
#include <LiquidCrystal_I2C_AvrI2C.h>
int trig = 8; // HC-SR04’teki trig pinini 8 nolu digital pine bağlıyoruz.
int echo = 9; // HC-SR04’teki echo pinini 9 nolu digital pine bağlıyoruz.
long sure;
long uzaklik;
LiquidCrystal_I2C_AvrI2C lcd(0x3f, 16, 2); // 16 karakter 2 satır için – 20×4 satır için (0x27,20,4) yazın
void setup()
{
pinMode(echo, INPUT); // Echo pinini input olarak ayarlıyoruz.
pinMode(trig, OUTPUT); // Trig pinini output olarak belirliyoruz.
lcd.begin(); // LCD’yi başlatıyoruz.
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print(“Bilisim Hocasi”); //İlk satıra yazalım
lcd.setCursor(0, 1);
lcd.print(“Hosgeldiniz”); //İkinci satıra yazalım
delay(2000); // Sonraki işlemi 2 saniye geciktiriyoruz..
lcd.clear();
}
void loop()
{
digitalWrite(trig, LOW); /* sensör pasif hale getirildi */
delayMicroseconds(5);
digitalWrite(trig, HIGH); /* Sensore ses dalgasının üretmesi için emir verildi */
delayMicroseconds(10);
digitalWrite(trig, LOW); /* Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi */
sure = pulseIn(echo, HIGH); /* ses dalgasının geri dönmesi için geçen sure ölçülüyor */
uzaklik = sure / 58.2; /* ölçülen sure uzaklığa çevriliyor */
if (uzaklik > 200 || uzaklik <0) {
lcd.setCursor(0, 0);
lcd.print(“Mesafe Disi “);
}
else if (uzaklik >= 100) {
lcd.setCursor(0, 0);
lcd.print(“Uzaklik: “);
lcd.print(uzaklik);
lcd.print(” cm”);
}
else if (uzaklik >= 10) {
lcd.setCursor(0, 0);
lcd.print(“Uzaklik: “);
lcd.print(uzaklik);
lcd.print(” cm “);
}
else {
lcd.setCursor(0, 0);
lcd.print(“Uzaklik: “);
lcd.print(uzaklik);
lcd.print(” cm “);
}
delay(250);
}
Kütühaneyi indirin –> LiquidCrystal_I2C_AvrI2C
Kodu indirin –> Mesafeyi LCD Ekranda gösterme
NOT: Eğer 0x27 i2c adresi çalışmazsa 0x3f adresini deneyin. Eğer bu da çalışmazsa i2c Bağlantı Adresi Tespiti makalesine göz atabilirsiniz.