Arduino Ders 13: HCSR04 Ultrasonik Mesafe Sensörü

Arduino Uygulaması

Ultrasonik Mesafe Sensörü Kullanımı

HC-SR04 ultrasonik mesafe sensörü ile mesafe ölçüp sonucu Seri Port Ekranı’na santimetre olarak yazdıracağız.

Arduino ultrasonik mesafe sensörü kullanımı

Bu derste ultrasonik mesafe sensörünün kullanımı anlatılmıştır. Seri port ekranına cm olarak yazdırılmıştır.

  • Arduino Uno
  • HC-SR04 Ultrasonik Mesafe Sensörü

HC-SR04 sensöründe genellikle VCC, Trig, Echo ve GND pinleri bulunur. VCC 5V’a, GND GND hattına, Trig dijital çıkış pinine, Echo ise dijital giriş pinine bağlanır.

Bu örnekte Trigger pini Arduino’nun 13 numaralı pinine, Echo pini ise 12 numaralı pinine bağlanmıştır. Sensörün VCC pini 5V’a, GND pini ise GND hattına bağlanır.

Arduino HC-SR04 ultrasonik mesafe sensörü devre şeması

Ultrasonik mesafe sensörü, Trigger pininden kısa bir tetikleme sinyali aldıktan sonra ses dalgası gönderir. Ses dalgası bir cisme çarpıp geri döndüğünde Echo pininden bir süre değeri okunur.

Okunan süre değeri kullanılarak mesafe santimetre cinsinden hesaplanır ve Seri Port Ekranı’na yazdırılır.

HC-SR04 için Trigger sinyalinin 10 mikro saniye HIGH yapılması yaygın kullanımdır. Mesafe hesabında (sure / 2) / 29.1 veya pratik olarak sure / 58 kullanılabilir.

Aşağıdaki kod, verdiğin orijinal kod yapısını korur. Trigger pininden sinyal gönderilir, Echo pininden süre okunur ve mesafe Seri Port Ekranı’na yazdırılır.

int sure ;
int mesafe ;
int trigger = 13;
int echo = 12;

void setup() {
  Serial.begin(9600);
  pinMode(trigger , OUTPUT);
  pinMode(echo , INPUT);

}

void loop() {
  digitalWrite(trigger , HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger , LOW);
  sure = pulseIn(echo , HIGH);
  mesafe = (sure / 2) / 29.1;
  Serial.print(mesafe);
  Serial.println(" cm");
  delay(500);
}

Bu sürümde ölçümden önce Trigger pini kısa süre LOW yapılır, pulseIn() için zaman aşımı eklenir ve ölçüm alınamazsa Seri Port Ekranı’na bilgi yazdırılır.

const int trigger = 13;
const int echo = 12;

long sure;
int mesafe;

void setup() {
  Serial.begin(9600);
  pinMode(trigger, OUTPUT);
  pinMode(echo, INPUT);
  digitalWrite(trigger, LOW);
}

void loop() {
  digitalWrite(trigger, LOW);
  delayMicroseconds(2);

  digitalWrite(trigger, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger, LOW);

  sure = pulseIn(echo, HIGH, 30000);

  if (sure == 0) {
    Serial.println("Olcum alinamadi");
  } else {
    mesafe = sure / 58;
    Serial.print(mesafe);
    Serial.println(" cm");
  }

  delay(500);
}

Düzenlenmiş kod, aynı uygulama mantığını korur; sadece ölçümün daha kararlı ve okunabilir olmasını sağlar.

Yorum Gönder

Daha yeni Daha eski