Bu proje, HC-SR04 ultrasonik sensör ile mesafe ölçümü yapar ve sonucu I2C destekli 16×2 LCD ekrana yazdırır. Ayrıca, belirlenen bir mesafeden daha yakına gelindiğinde buzzer ile sesli uyarı verir.
Proje İçin Gerekli Malzemeler:
- 1 x Arduino (Uno, Nano, vb.)
- 1 x Breadboard
- 1 x HC-SR04 Mesafe Sensörü
- 1 x I2C 16×2 LCD Ekran
- 1 x Buzzer Modülü
- Jumper Kablolar
Bağlantı Şeması:

- 1x Arduino: Projenin ana kontrol birimi.
- 1x HC-SR04 Mesafe Sensörü:
- VCC → Arduino 5V pinine
- GND → Arduino GND pinine
- TRIG → Arduino D9 pinine
- ECHO → Arduino D10 pinine
- 1x Buzzer Modülü:
- Pozitif (VCC) → Arduino D8 pinine
- GND → Arduino GND pinine
- 1x I2C 16×2 LCD Ekran:
- VCC → Arduino 5V pinine
- GND → Arduino GND pinine
- SDA → Arduino A4 pinine (I2C hattı)
- SCL → Arduino A5 pinine (I2C hattı)
Kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | //----------------------------------------// //---------------KODKAMPUSU---------------// //---Arduino | Bluetooth ile LED Yakmak---// //----------------------------------------// #include <Wire.h> //Arduino ile I2C LCD Ekranın haberleşmesi için Wire kütüphanesini tanımlıyoruz #include <LiquidCrystal_I2C.h> //I2C LCD Ekranımızın kütüphane tanımlamasını yapıyoruz #include "NewPing.h" // HC-SR04 sensöründen veri almak için kütüphane #define TRIGGER_PIN 9 // Sensörün tetikleme pini TRIGGER #define ECHO_PIN 10 // Sensörün yankı pini ECHO #define MAX_DISTANCE 500 // Maksimum ölçüm mesafesi (500 cm) const int buzzer = 8; // Buzzer modülü, pin 8'e bağlı LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD ekranın I2C adresi ve boyutu (0x27, 16 sütun, 2 satır) NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // HC-SR04 sensörü için pinler ve mesafe sınırı int mesafe; // Ölçülen mesafenin tutulacağı değişken void setup() { lcd.init(); // LCD ekranı başlat lcd.backlight(); // LCD ekranın arka ışığını aç pinMode(buzzer, OUTPUT); // Buzzer çıkış pini olarak ayarlanıyor } void loop() { mesafe = sonar.ping_cm(); // HC-SR04'ten mesafeyi cm cinsinden ölç lcd.setCursor(0, 0); // LCD'nin ilk satırına konumlan lcd.print("Mesafe = "); // Mesafe bilgisini ekrana yazdır if (mesafe >= 500 || mesafe <= 1) { // Mesafe sınırların dışındaysa: lcd.setCursor(0, 1); // İkinci satıra geç lcd.print("Cok Yakin!"); // "Çok Yakın" uyarısı yaz tone(buzzer, 1255); delay(200); // Buzzer ile sesli uyarı ver noTone(buzzer); delay(200); // Sesi kes, sonra tekrar ver } else { // Mesafe uygun aralıktaysa: lcd.setCursor(0, 1); // İkinci satıra geç lcd.print(mesafe); // Mesafe değerini yaz lcd.print(" cm"); // "cm" birimini ekle } delay(500); // Bir sonraki ölçüm öncesi 500 ms bekle } |
Açıklamalar ve Dikkat Edilmesi Gereken Noktalar:
- Kütüphane Tanımları ve Donanım Bağlantıları:
- Wire.h ve LiquidCrystal_I2C.h LCD ekranı kontrol etmek için, NewPing.h ise HC-SR04 sensöründen veri almak için kullanılır.
- TRIGGER_PIN ve ECHO_PIN sensör bağlantılarını belirler. MAX_DISTANCE değişkeni ile sensörün ölçüm yapabileceği maksimum mesafe tanımlanır.
- Buzzer pin 8’e bağlanmıştır ve sesli uyarı için kullanılır.
- Setup() Fonksiyonu:
- LCD ekran başlatılır ve arka ışığı açılır.
- Buzzer çıkış pini olarak tanımlanır.
- Loop() Fonksiyonu:
- Mesafe Ölçümü: Sensörden alınan değer cm cinsinden okunur. Eğer mesafe 1 cm’den küçük veya 500 cm’den büyükse LCD’ye “Çok Yakın” yazılır ve buzzer devreye girer.
- Normal Durum: Ölçülen mesafe değeri LCD’ye yazdırılır.
- I2C Adresi: LCD ekranın I2C adresi farklı olabilir. Doğru adresi bulmak için I2C tarama kodu kullanabilirsiniz.
- Buzzer Kullanımı: Uzun süreli sesli uyarı istemiyorsan, tone() ve noTone() arasındaki gecikme sürelerini artırabilirsiniz.
Bağlantı ve kodlama sırasında karşılaştığınız hataları; aşağıda ki yorum bölümünden belirtebilirsiniz :)