Projenin amacı, HC-SR04 ultrasonik mesafe sensörü kullanarak bir engel algılama cihazı oluşturmaktır. Sensörden gelen veriler, bir 16×2 LCD ekran üzerinde gösterilecektir. Ayrıca, mesafe aralıklarına göre farklı renklerde LED’lerin yanıp söneceği bir sistem de tasarlanacaktır.

İlk olarak, 16×2 LCD ekran bağlantısı yapılmıştır. Daha sonra HC-SR04 sensörleri analog pinlere bağlanmış ve Arduino kodu ile sensörden gelen mesafe verisi LCD ekran üzerinde gösterilmiştir. Son olarak, mesafe aralıklarına göre LED’lerin yanıp söneceği sistem kodlanmış ve uygulanmıştır.

HC-SR04 sensörü kullanılarak bir engel algılama cihazı oluşturulmuştur. Sensörden gelen mesafe verisi 16×2 LCD ekran üzerinde kullanıcıya gösterilmekte ve mesafe aralıklarına göre LED’ler farklı renklerde yanıp sönmektedir. Bu proje, robotik, otomasyon ve IoT gibi alanlarda kullanılabilir ve bu alanlarda kullanılabilecek birçok farklı projenin temelini oluşturabilir.

//www.bozukdevre.net
#include <LiquidCrystal.h> 

// LCD Pin Tanımları
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

// Ultrasonic Sensor Pin Tanımları
const int trigPin = 9, echoPin = 10;

// LED Pin Tanımları
const int greenLed = 6, yellowLed = 7, redLed = 8;

// Buzzer Pin Tanımı
const int buzzer = 13;

// Mesafe Değişkenleri
long duration, distance;

void setup() {
  // LCD Setup
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("MESAFE:");

  // Ultrasonic Sensor Setup
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // LED Setup
  pinMode(greenLed, OUTPUT);
  pinMode(yellowLed, OUTPUT);
  pinMode(redLed, OUTPUT);

  // Buzzer Setup
  pinMode(buzzer, OUTPUT);
}

void loop() {
  // Ultrasonic Sensor Mesafe Ölçümleri
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034 / 2;

  // LCD Mesafe Yazma
  lcd.setCursor(0, 1);
  lcd.print(distance);
  lcd.print(" cm   ");

  // LED and Buzzer Yanıp Sönmesi
  if (distance > 50) {
    digitalWrite(greenLed, HIGH);
    digitalWrite(yellowLed, LOW);
    digitalWrite(redLed, LOW);
    noTone(buzzer);
    delay(100);
    digitalWrite(greenLed, LOW);
    delay(50);
  } else if (distance > 25) {
    digitalWrite(greenLed, LOW);
    digitalWrite(yellowLed, HIGH);
    digitalWrite(redLed, LOW);
    tone(buzzer, 1000);
    delay(50);
    noTone(buzzer);
    delay(50);
    digitalWrite(yellowLed, LOW);
  } else if (distance > 10) {
    digitalWrite(greenLed, LOW);
    digitalWrite(yellowLed, LOW);
    digitalWrite(redLed, HIGH);
    tone(buzzer, 1000);
    delay(10);
    noTone(buzzer);
    delay(10);
  } else {
    digitalWrite(greenLed, LOW);
    digitalWrite(yellowLed, LOW);
    digitalWrite(redLed, HIGH);
    digitalWrite(buzzer, HIGH);
    digitalWrite(greenLed, HIGH);
    digitalWrite(yellowLed, HIGH);
    delay(50);
    digitalWrite(greenLed, LOW);
    digitalWrite(yellowLed, LOW);
    delay(50);
    digitalWrite(buzzer, LOW);
  }
}

Arduino ve HC-SR04 sensörleri arasındaki bağlantıları gösteren bir tablo yer almaktadır:

HC-SR04 PinArduino Bağlanacağı pin
VCC5V
Trig (Tetik)9
Echo (Yankı)10
GNDGND
HC-SR04 Pin Tablosu

LED’lerin bağlantıları da aşağıdaki gibidir:

LED RenkArduinoda bağlanacağı pin
Yeşil LED6
Sarı LED7
Kırmızı LED8
Led Pin Tablosu

Buzzer ise D11 pinine bağlanmıştır. LED’ler için kullanılan direnç değerleri ise 220 ohm olarak kullanılmıştır.

Çalışma mantığı şu şekildedir;

HC-SR04 sensörü ile mesafe ölçülecek ve ekranın üst satırında “MESAFE” alt satırında ölçülen mesafe cm cinsinden verilerek (“x cm”) ortalı şekilde gözükecektir. Mesafe değiştikçe kendisini sürekli güncelleyecektir.

• 1m ile 50 cm arasında ise BUZZER ve yeşil LED 50 ms aktif 100 ms pasif çalışacaktır

• 50 cm -25 cm arasında ise BUZZER ve sarı LED 50 ms aktif 50 ms pasif çalışacaktır.

• 25 cm- 10 cm arasında ise BUZZER ve kırmızı LED 10 ms aktif 10 ms pasif çalışacaktır.

• 10 cm altında ise BUZZER ve kırmızı LED sabit sarı ve yeşil ledler 50 ms aktif 50 ms pasif çalışacaktır.