30 Kasım 2014 Pazar

HC-SRO4 MesafeSensörü Kontrolü

Arduino İle HC-SRO4 Uzaklık Sensörü Kontrolü

Uzaklık sensörleri genellikle engel algılamak için kullanılırlar. Örneğin; yapacağınız robotun bazı engellere takılmaması için bir uzaklık sensörüne ihtiyaç duyarsınız. En çok bilinen bir diğer uygulama da su seviyesinin ölçümüdür.
hc-sr04-s
HC-SRO4 uzaklık sensörü, engeli algılamak için ultrasonik ses dalgalarını kullanır. Üzerinde bulunan verici ultrasonik ses dalgası yayar. Bu dalga engele çarpıp yine HC-SRO4’ün üzerinde bulunan alıcıya ulaşır. Sinyalin vericiden çıkıp, alıcıya ulaşması için geçen süreye göre engele olan mesafe hesaplanır.
HCSRO4 için hazırlanmış kütaphanenin örnek programını kullanarak, arduino’nun 13, pinine bağladığımız ledin uzaklığa göre parlaklığını kontrol edeceğiz.
Programımızda engel yaklaştıkça ledin parlaklığının artmasını sağlayacağız.

Arduino ile HC-SR04 Uzaklık Sensörü Kontrolü Devresi

arduino_hcsr04

Arduino ile HC-SR04 Uzaklık Sensörü Kontrolü Akış Diagramı

arduino_hcsr04_flowchart

Arduino ile HC-SR04 Uzaklık Sensörü  Kontrolü Kodu

Örnek kütüphaneyi buradan indiriniz.
Kütüphaneyi, arduinoyu yüklediğiniz klasörün içindeki ‘libraries’ klasörünün içine kopyalayınız.

hcsro4_lib

Aşagıdaki adımları izleyerek örnek programı açınız.

hcsro4_ex

Arduino ile HC-SR04 Uzaklık Sensörü  Kontrolü Örnek Kodu

Örnek program aşağıdaki gibidir.
// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------

#include <NewPing.h>

#define TRIGGER_PIN  12  // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN     11  // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
}

void loop() {
  delay(50);                      // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
  unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).
  Serial.print("Ping: ");
  Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println("cm");
}
Bu kodu çalıştırdığınızda engele olan uzaklığın serial monitör’e yazıldığını görebilirsiniz.

Arduino ile HC-SR04 Uzaklık Sensörü  Kontrolü  Kodu

Bu örnek kod’a led için bir iki satır ekleyip, Led ile Ultrasonik sensörün çalışmasını rahatça gözlemleyeceğiz.

#include <NewPing.h>

#define TRIGGER_PIN  10   //Ultrasonik Sensörün Trigger Pini
#define ECHO_PIN     11  // Ultrasonik Sensörün Echo Pini
#define MAX_DISTANCE 255 // Engel algılama için Maksimum Mesage
#define LED 13
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); 
// Ultrasonik Sensör değişkeni oluşturuldu.

void setup() {
  pinMode(LED,OUTPUT);                 // Led Output Olarak ayarlandı
  
  Serial.begin(115200); // Seri haberleşme 'Baudrate' ayarlandı.
  /*****  Serial Monitörde de   Baudrate'i 115200 ayarlamayı unutmayın *****/
}

void loop() {
  
  unsigned int uS = sonar.ping(); 
// Gönderilen ultrasonik dalganın ger dönüş süresinin değişkeni

  Serial.print("Ping: ");         // Ekrana yazılıyor
.
  Serial.print(uS / US_ROUNDTRIP_CM); // Süre mesafe'ye çeviriliyor.
  Serial.println("cm");
  
  if(uS / US_ROUNDTRIP_CM>50) // Mesafe 50 cm fazla ise Ledi söndür
  analogWrite(LED,0);
  else        // Eger değilse Ledin parlaklığının mesafeye göre değiştir.
  analogWrite(LED,255-5*uS / US_ROUNDTRIP_CM);
  
}




2 yorum:

  1. iyi günler ben HC-SR04 e araç yaklaşınca motorun durmasını istiyorum uzaklaşınca motorun çalışmasını nasıl kod yazabilirim arduiino için

    YanıtlaSil
    Yanıtlar
    1. tabii ki sensör belli bir uzaklıktan aşağısını ölçerse motorun elektriğini kes, o uzaklıktan yukarısını ölçerse motora elektrik ver!!!!

      Sil