Ultrasonik mesafe sensörü, park sensörü gibi gündelik uygulamalarda kullanabileceğimiz bir elektronik component'idir. Ultrasonik sensörlerin çalışma mantığı, bir gözünden ses sinyali göndererek diğer gözünden gönderdiği sesin bir cisme temas edip etmediiğini kontrol ederek çalışırlar. Gönderdiği ses ne kadar erken bir cisme çarparsa o kadar yakınında bir cisim olduğunu algılarlar ve bu mesafeyi de birazcık kod yazarak cm cinsinden öğrenebiliriz.
Arduino component'i olarak satın aldığımız ultrasonik sensörlerin 4 adet pini bulunmaktadır: artı, eksi pinleri ile trigger pini (tetikleme pini) ve echp pini (dönen sinyali dinlediğimiz pin). Ancak tinkercad üzerinde tasarlanmış olan ultrasonik mesafe sensörü simülasyonunun üç adet pini olduğu için bu uygulamayı üç pin üzerinden hazırlayacağım, çalışma mantıkları birebir aynı olacak. Üçüncü pin hem echo hem de trigger pini olarak hem input hem de output olacak şekilde loop içerisinde kodlanarak belirlenecek.
Şimdi ultrasonik mesafe sensörümüz için karşısındaki cisim ile arasındaki mesafeyi cm cinsinden ölçebilen kodları yazalım. Bu uygulamayı birazdan buzzer ile bir park sensörü uygulamasına dönüştüreceğiz.
Kodlar:
const int ultrasonik = 8;
void setup() {
Serial.begin(9600);
}
void loop() {
int sure, cm;
pinMode(ultrasonik, OUTPUT);
digitalWrite(ultrasonik, LOW);
delayMicroseconds(2);
digitalWrite(ultrasonik, HIGH);
delayMicroseconds(5);
digitalWrite(ultrasonik, LOW);
pinMode(ultrasonik, INPUT);
sure = pulseIn(ultrasonik, HIGH);
cm = mikrosaniyeCmDonustur(sure);
Serial.print("Mesafe: ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(50);
}
int mikrosaniyeCmDonustur(int mikrosaniye) {
return (mikrosaniye/2)/29;
}
Mikrosaniye cinsinden geçen zamanı cm uzaklık birimine dönüştüren kodları mikrosaniyeCmDonustur fonksiyonu içinde bulabilirsiniz. Ultrasonik mesafe sönsöründe gönderip alma süreleri arasında normalde arduino'da kullandığımız delay metodunda olduğu gibi milisaniye yerine mikrosaniye cinsinden yazdığımız için delayMicroseconds fonksiyonu kullanılır.