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-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 ile HC-SR04 Uzaklık Sensörü Kontrolü Akış Diagramı
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.
Aşagıdaki adımları izleyerek örnek programı açınız.
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);
}
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ıtlaSiltabii 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