Mesafe Sensörü

Sizde kendi mesafe sensörünüzü yapmak isterseniz işte gerekenler, şema ve kodlar.

  • Arduino Uno R3
  • HC-SR04 Mesafe Sensörü
  • Aktif Buzzer
arduino mesafe sensörü

ve kodlar (sadece Arduino Uno R3 içindir, mesafeleri değiştirebilirsiniz)

// HC-SR04 Sensör Pin Tanımlamaları
const int trigPin = 2; 
const int echoPin = 3; 

// Aktif Buzzer Pin Tanımlaması
const int buzzerPin = 8; 

// Mesafe Hesaplaması için Değişkenler
long duration; 
int distanceCm; 

void setup() {
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT);  
  pinMode(buzzerPin, OUTPUT); 
  
  Serial.begin(9600);
  Serial.println("Park Sensoru Modu Aktif.");
}

void loop() {
  // 1. Ölçüm Başlatma
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // 2. Süreyi Ölçme ve Mesafeyi Hesaplama
  duration = pulseIn(echoPin, HIGH);
  distanceCm = duration / 58; // cm cinsinden mesafe
  
  // Seri Monitöre mesafeyi yazdır
  Serial.print("Mesafe: ");
  Serial.print(distanceCm);
  Serial.println(" cm");
  
  // 3. Buzzer Kontrolü (Kademeli Bipleme)
  
  if (distanceCm > 30 || distanceCm <= 0) {
    // 30 cm'den uzak veya hatalı okuma (0 cm)
    digitalWrite(buzzerPin, LOW); // Buzzer KAPALI
    
  } else if (distanceCm > 15 && distanceCm <= 30) {
    // 30 - 15 cm arası: Hafif bip bip (Yavaş)
    bipleme(150); // 150 ms bekleme (yavaş bip)
    
  } else if (distanceCm > 10 && distanceCm <= 15) {
    // 15 - 10 cm arası: Hızlı bip bip (Orta)
    bipleme(75); // 75 ms bekleme (orta hızda bip)
    
  } else if (distanceCm > 0 && distanceCm <= 10) {
    // 10 - 0 cm arası: Çok hızlı bip bip (Çok Hızlı)
    bipleme(30); // 30 ms bekleme (çok hızlı bip)
  }
  
  // Bir sonraki ölçümden önce genel bekleme
  // Bipleme süresinin kontrolü `bipleme` fonksiyonu içinde yapıldığı için burada daha kısa bir bekleme yeterli.
  delay(10); 
}

/**
 * Buzzer'ı kısa bir süre çalıştırıp sonra verilen süre kadar bekler.
 * Bu, bip sesi efekti oluşturur.
 * @param beklemeSuresi: Bip sesinden sonraki bekleme süresi (ms). Bu süre, bip hızını belirler.
 */
void bipleme(int beklemeSuresi) {
  // Buzzer'ı kısa bir an için aç
  digitalWrite(buzzerPin, HIGH);
  delay(5); // Buzzer AÇIK kalma süresi (bip'in uzunluğu, sabit tutulabilir)
  
  // Buzzer'ı kapat
  digitalWrite(buzzerPin, LOW);
  
  // Belirtilen süre kadar bekle (Bu süre, bipleme hızını belirler)
  delay(beklemeSuresi);
}