Raspberry Pi Raspberry Pi ile Mesafe Ölçümü By Umut Kazanç Posted on 3 Temmuz 2017 4 min read 3 0 2,787 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba Arkadaşlar; Bu uygulamada HC-SR04 ile mesafe ölçümü yapacağım. Bunun için ilk önce HC-SR04 ü biraz tanıyalım. 4 pinden oluşmaktadır. VCC- GND ve pals pinleri. Trig pini ile pals verip Echo pinini dinleriz ve gelen sinyalin uzunluğuna göre bize sonuncu bildirir. Şekilde görüldüğü gibi 10uS lik pals den sonra 8 defa 40 khz de ölçüm alarak bize Echo pininden çıkış vermektedir. Raspberry Pi bağlantısı için ben Trig ->GPIO 0 ve Echo için GPIO 1 nolu gpio pinlerine bağladım. Pinleri hatırlamak gerekirse aşağıdaki resmi inceleyebilirsiniz. Vcc -> 5V ve GND yide bağladıktan sonra programa geçebiliriz. Netbeans ile yeni proje açıp Pi mizi seçelim. (Netbans kurulumu ve proje oluşturmak için önceki yazılarıma bakabilirsiniz.) İlk olarak pinleri giriş çıkış ayarladıktan sonra Trig pinine gerekli pals verilir. digitalWrite(TRIG, HIGH); delayMicroseconds(20); digitalWrite(TRIG, LOW); daha sonra echo pini palsi bağşatıncaya kadar bekleriz while(digitalRead(ECHO) == LOW); Pals başlayınca sistem timer daki değer başka bir değişkene yedeklenir. long startTime = micros(); ve Pals 0 oluncaya kadar beklenir. while(digitalRead(ECHO) == HIGH); Echo 0 olduktan sonra sistem timer daki değerden yedeklediğimiz çıkartılır. long travelTime = micros() - startTime; Sonuç Elde edilir. int distance = travelTime / 58; Programın tam halini aşağıda veriyorum. #include <stdio.h> #include <stdlib.h> #include <wiringPi.h> #define TRIG 13 #define ECHO 12 void setup() { wiringPiSetup(); pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT); //TRIG pini başlangıç için low digitalWrite(TRIG, LOW); delay(30); } int getCM() { //trig pals gönder digitalWrite(TRIG, HIGH); delayMicroseconds(20); digitalWrite(TRIG, LOW); //echo başlangıcına kadar bekle while(digitalRead(ECHO) == LOW); //echo bitene kadar bekle long startTime = micros(); while(digitalRead(ECHO) == HIGH); long travelTime = micros() – startTime; //mesafeyi olc int distance = travelTime / 58; return distance; } int main(int argc, char** argv) { setup(); printf(“Uzunluk: %dcm\r\n”, getCM()); return (EXIT_SUCCESS); } Netbeans üzerinden programımızı çalıştırırsak sonuncu görmüş olacağız. Bir sonraki uygulamada görüşmek üzere…