Bu yazıda, Arduino ile HC-SR04 mesafe sensörü ve 16×2 karakter LCD ekranı I2C modülü ile kullanarak mesafe ölçümlerini ekranda görüntüleyeceğiz.
Gerekli Malzemeler:
- Arduino Uno (veya benzeri bir Arduino kartı)
- HC-SR04 mesafe sensörü
- 16×2 karakter LCD ekran (HD44780 uyumlu)
- I2C LCD adaptör modülü (örneğin, PCF8574)
- Breadboard
- Jumper kablolar
Devre Kurulumu:
- Mesafe Sensörü Bağlantıları:
- Sensörün VCC pinini Arduino’nun 5V pinine bağlayın.
- Sensörün GND pinini Arduino’nun GND pinine bağlayın.
- Sensörün Trig pinini Arduino’nun dijital pinlerinden birine bağlayın (örneğin, pin 8).
- Sensörün Echo pinini Arduino’nun dijital pinlerinden birine bağlayın (örneğin, pin 9).
- LCD Ekran ve I2C Modülü Bağlantısı:
- I2C modülünü LCD ekranın arkasındaki pinlere takın.
- Arduino Bağlantıları:
- I2C modülünün VCC pinini Arduino’nun 5V pinine bağlayın.
- I2C modülünün GND pinini Arduino’nun GND pinine bağlayın.
- I2C modülünün SDA pinini Arduino’nun SDA pinine bağlayın (Uno’da A4, Mega’da 20).
- I2C modülünün SCL pinini Arduino’nun SCL pinine bağlayın (Uno’da A5, Mega’da 21).
- Devre Şeması:
Arduino | I2C Modülü | LCD Ekran | Mesafe Sensörü |
---|---|---|---|
GND | GND | VSS | GND |
5V | VCC | VDD | VCC |
A4 | SDA | (I2C) | – |
A5 | SCL | (I2C) | – |
Pin 8 | – | – | Trig |
Pin 9 | – | – | Echo |
Kodlama:
- Kütüphane Kurulumu:
- Arduino IDE’sinde “Araçlar” > “Kütüphane Yöneticisi” yolunu izleyin.
- “LiquidCrystal_I2C” arayın ve uygun bir kütüphaneyi yükleyin (örneğin, “LiquidCrystal I2C by Frank de Brabander”).
- Kod Yazma:
- Aşağıdaki kodu Arduino IDE’ye yazın:
#include <Wire.h> #include <LiquidCrystal_I2C.h> // I2C LCD adresini ayarlayın (genellikle 0x27 veya 0x3F) LiquidCrystal_I2C lcd(0x27, 16, 2); #define echoPin 9 // Echo pin tanımı #define trigPin 8 // Trigger pin tanımı long duration; // Ses dalgasının gidiş-dönüş süresi int distance; // Hesaplanan mesafe (cm) void setup() { lcd.init(); // LCD ekranı başlat lcd.backlight(); // Arka ışığı aç pinMode(trigPin, OUTPUT); // Trigger pinini çıkış olarak ayarla pinMode(echoPin, INPUT); // Echo pinini giriş olarak ayarla Serial.begin(9600); // Seri haberleşmeyi başlat (debug için) } void loop() { // Mesafe ölçümü yap digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.034 / 2; // Mesafeyi cm cinsinden hesapla // Mesafeyi LCD ekrana yazdır lcd.clear(); // Ekranı temizle lcd.setCursor(0, 0); // İmleci ilk satırın başına getir lcd.print("Mesafe:"); lcd.setCursor(0, 1); // İmleci ikinci satırın başına getir lcd.print(distance); lcd.print(" cm"); Serial.print("Mesafe: "); Serial.print(distance); Serial.println(" cm"); // Mesafeyi seri monitöre yazdır (debug için) delay(500); // 500 ms bekle }
Kod Açıklaması:
- Kütüphaneleri Dahil Etme: Wire.h ve LiquidCrystal_I2C.h kütüphanelerini dahil ediyoruz.
- LCD Nesnesi Oluşturma: LiquidCrystal_I2C sınıfından lcd adında bir nesne oluşturuyoruz ve I2C adresini, sütun ve satır sayısını belirtiyoruz.
- Pin Tanımları: echoPin ve trigPin değişkenlerini mesafe sensörünün pinlerine atıyoruz.
- setup() Fonksiyonu:
- LCD ekranı başlatıyoruz ve arka ışığını açıyoruz.
- trigPin ve echoPin pinlerini çıkış ve giriş olarak ayarlıyoruz.
- Seri haberleşmeyi 9600 baud hızında başlatıyoruz (hata ayıklama için).
- loop() Fonksiyonu:
- Mesafe Ölçümü:
- trigPin üzerinden ultrasonik darbe gönderiyoruz.
- echoPin üzerinden yankılanan darbenin süresini ölçüyoruz.
- Mesafeyi cm cinsinden hesaplıyoruz.
- LCD Ekran Güncelleme:
- LCD ekranını temizliyoruz.
- İmleci ilk satıra getirip “Mesafe:” yazıyoruz.
- İmleci ikinci satıra getirip ölçülen mesafeyi cm cinsinden yazdırıyoruz.
- Seri Monitör Çıktısı: Mesafeyi seri monitöre yazdırıyoruz (hata ayıklama için).
- 500 ms bekleme süresi ekliyoruz.
- Mesafe Ölçümü:
Ek Açıklamalar:
- Kütüphaneler: LiquidCrystal_I2C kütüphanesi I2C LCD ekranını kontrol etmek için kullanılır.
- Pin Tanımlamaları: Mesafe sensörünün Trig ve Echo pinleri ile I2C LCD modülünün adresi tanımlanır.
- LCD Başlatma: lcd.init() fonksiyonu LCD’yi başlatır ve lcd.backlight() fonksiyonu arka ışığı açar.
- Mesafe Ölçümü: pulseIn() fonksiyonu ile Echo pinindeki yüksek sinyal süresi ölçülür ve mesafe hesaplanır.
- LCD Görüntüleme: lcd.clear() fonksiyonu ekranı temizler, lcd.setCursor() fonksiyonu imlecin konumunu ayarlar ve lcd.print() fonksiyonu metni ekrana yazar.
Sonuç:
Bu projede, Arduino ile HC-SR04 mesafe sensörü ve I2C LCD ekranını kullanarak mesafe ölçümlerini ekranda nasıl görüntüleyeceğinizi öğrendiniz. Bu projeyi daha da geliştirebilir ve alarm sistemleri, robotik uygulamalar veya otomatik kapı sistemleri gibi projelerde kullanabilirsiniz.
Yorumlar