Arduino UNO ile Park Sensörü Projesi: Adım Adım Anlatım
Herkese selamlar. Bundan bir önceki yazımızda sizlere “Ardunio nedir?” adlı yazımızda Arduino kartlarını nerelerde kullanıldığını ve çalışma mantıklarından bahsettik. Bugün ki yazımızda Arduino Giriş Seviyesi projelerinden biri olan Park Sensörü tasarımını gerçekleştireceğiz.
Bu proje günlük hayatımızın parçası olan arabalarımızda bulunan bu sensörlerin nasıl çalıştığı hakkında bilgi verecektir.
Projede Kullanılan Parçalar
- Arduino UNO
- HC-SR04 Ultrasonik Mesafe Sensörü
- Breadboard ve Jumper Kabloları
- Aktif ve Pasif Buzzer
- 10K Potansiyometre
- LCD Ekran (isteğe bağlı)
Devre Bağlantıları:
Devreyi oluşturmak için aşağıdaki bağlantıları kullanabilirsiniz:
- HC-SR04 VCC –> 5V
- HC-SR04 GND –> GND
- HC-SR04 TRIG –> D2
- HC-SR04 ECHO –> D3
- Buzzer VCC –> D8
- Buzzer GND –> GND
- Potansiyometre GND –> GND
- Potansiyometre VCC –> 5V
- Potansiyometre OUT –> A0
- LCD Ekran SDA –> A4
- LCD Ekran SCL –> A5
- LCD Ekran VCC –> 5V
- LCD Ekran GND –> GND
Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int trigPin = 2;
const int echoPin = 3;
const int buzzerPin = 8;
const int potPin = A0;
long duration;
int distance;
int threshold = 20; // Mesafe sensörüne göre ayarlanacak eşik değeri
void setup() {
Serial.begin(9600);
lcd.begin(16,2);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Mesafe: ");
lcd.print(distance);
lcd.print(" cm");
if(distance < threshold) {
tone(buzzerPin, 1000);
} else {
noTone(buzzerPin);
}
delay(500);
}
Bu Arduino kodu, sensör tarafından ölçülen mesafeyi ekrana ve eşik değere göre buzzer’ı kontrol eder. Eğer araç bir engeli algılarsa, buzzer ses çıkararak sizi uyaracaktır.
Kod Açıklamaları
Tabii, işte kodunuzdaki her bir satırın açıklaması:
#include <Wire.h>
ve#include <LiquidCrystal_I2C.h>
: I2C protokolü üzerinden haberleşen bir LCD ekranı için gerekli kütüphaneleri projeye ekler.LiquidCrystal_I2C lcd(0x27, 16, 2);
: LCD ekran nesnesi oluşturulur. 0x27 adresi, LCD ekranın I2C adresini belirtir. Ardışık iki sayı, LCD ekranın sütun ve satır sayısını belirtir.const int trigPin = 2;
veconst int echoPin = 3;
: Ultrasonik mesafe sensörünün tetikleme ve yansıma pinlerinin Arduino pin numaralarını tanımlar.const int buzzerPin = 8;
: Buzzer’ın Arduino pin numarasını tanımlar.const int potPin = A0;
: Potansiyometrenin bağlı olduğu analog pinin numarasını tanımlar.long duration;
veint distance;
: Ultrasonik sensörden gelen verileri saklamak için kullanılan değişkenler.int threshold = 20;
: Park sensörünün uyarı vereceği mesafe eşiğini belirler. Bu değer, aracın bir engeli algıladığı mesafeyi temsil eder.void setup() { ... }
: Arduino’nun başlangıç ayarlarını yapmak için kullanılan fonksiyon.void loop() { ... }
: Arduino’nun ana döngüsünü temsil eden fonksiyon.Serial.begin(9600);
: Seri haberleşmeyi başlatır ve baud hızını belirtir. Bu, Arduino’nun seri monitörü aracılığıyla veri göndermesini ve almasını sağlar.lcd.begin(16,2);
: LCD ekranını başlatır ve sütun ve satır sayısını belirtir.pinMode(trigPin, OUTPUT);
vepinMode(echoPin, INPUT);
: Ultrasonik sensörün tetikleme pinini çıkış ve yansıma pinini giriş olarak ayarlar.pinMode(buzzerPin, OUTPUT);
: Buzzer’ın pinini çıkış olarak ayarlar.void loop() { ... }
fonksiyonu içindeki kodlar sırayla çalıştırılır:
digitalWrite(trigPin, LOW);
,delayMicroseconds(2);
,digitalWrite(trigPin, HIGH);
,delayMicroseconds(10);
vedigitalWrite(trigPin, LOW);
: Ultrasonik sensörün tetikleme sinyalini üretir.duration = pulseIn(echoPin, HIGH);
: Yansıma süresini ölçer ve süreyiduration
değişkenine kaydeder.distance = duration * 0.034 / 2;
: Mesafeyi hesaplar. Ultrasonik sensör, ses dalgalarının gidip gelmesi için gereken süreyi hesaplar.
Ufak Not
Bu süreyi 2’ye bölmemizin sebebi; Ses dalgasının gidiş-dönüş olarak ölçülmesidir. Ses hızını dikkate alarak mesafeyi hesaplarız.
lcd.clear();
,lcd.setCursor(0,0);
,lcd.print("Mesafe: ");
,lcd.print(distance);
,lcd.print(" cm");
: LCD ekrana mesafeyi yazdırır.if(distance < threshold) { ... } else { ... }
: Eğer ölçülen mesafe, belirlenen eşik değerinden küçükse, buzzer’ı çalıştırır; aksi halde buzzer’ı kapatır.delay(500);
: Döngü tekrar başlamadan 500 milisaniye bekler. Ölçümlerin çok hızlı yapılmasını engeller.
Sonuç:
Bu basit Arduino projesi ile temel yeteneklerini kullanımını ve aynı zamanda elektronik bileşenlerle nasıl çalıştığını keşfetmiş olduk.
Projeyi geliştirmek için LCD ekranı ekleyebilir veya farklı uyarı sistemleri de ekleyebilirsiniz.
Unutmayın ki güvenlik ön planda olmalıdır. Bu proje sadece eğitim amaçlıdır ve gerçek hayatta kullanılmamalıdır. İyi eğlenceler!
Share this content:
Yorum gönder