Raspberry Pi Ultrasonik Mesafe Sensörü

raspberry-pi-logo

Merhaba Arkadaşlar,

Bugün birlikte Raspberry Pi 3 kullanarak ultrasonik sensör yardımıyla mesafe ölçeceğiz. Ultrasonik sensörlerin çalışması hakkında geniş bilgiye buradan ulaşabilirsiniz. Bu işlem için ihtiyaç duyduğumuz malzemeler aşağıdaki gibidir.

  1. Raspberry Pi 3
  2. Breadboard
  3. HC-SR04 Ultrasonik Sensör
  4. 1 adet 1k direnç
  5. 1 adet 2k direnç
  6. 8 adet dişi-erkek jumper kablo

Devremizi aşağıdaki şekilde göründüğü gibi Breadboard üzerinde kuruyoruz.

fritzing-ultrasonic-400 ultrasonic1 ultrasonic2 ultrasonic3 ultrasonic4 ultrasonic5

Şimdide değerleri okuyabilmek için kodumuzu yazıyoruz.

# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO
import time
import datetime

GPIO.setmode(GPIO.BCM)

TRIG=20
ECHO=26

GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

GPIO.output(TRIG,False)
time.sleep(2)

while True:
   GPIO.output(TRIG, True)
   time.sleep(0.00001)
   GPIO.output(TRIG, False)

   while GPIO.input(ECHO)==0:
      pulse_start=time.time()

   while GPIO.input(ECHO)==1:
      pulse_end=time.time()

   pulse_duration = pulse_end - pulse_start

   distance = pulse_duration*17150

   distance = round(distance, 2)

   print("-------------------------------------------")
   print("Tarih: " + str(datetime.datetime.now()))
   print"Ölçülen Mesafe:",distance," cm"

   time.sleep(15)

GPIO.cleanup()

# -*- coding: utf-8 -*-

 

Kodu çalıştırdığımızda aşağıdaki gibi her 15 saniyede bir mesafeyi ölçüp tarih ile birlikte ekrana yazdığını görüyoruz.

ultrasonic6

Bunlar da hoşunuza gidebilir...

6 Cevaplar

  1. Alpaslan dedi ki:

    Merhaba.
    Proğram Raspberry pi 4 te çalışırmı. Birde Breadboard olmadan nasıl bağlayabilirim küçük bir terif edebilirmisiniz rica etsem. Teşekkür eder iyi çalışmalar dilerim

  2. halil dedi ki:

    Merhaba Bunlar C kodları mı?

  3. Semih DURAN dedi ki:

    Merhaba,

    Kodlar python kodlarıdır.

  4. eren dedi ki:

    #include
    #include
    #include

    #define TRIG 22
    #define ECHO 25

    void setup()
    {
    wiringPiSetupGpio();
    pinMode(TRIG, OUTPUT);
    pinMode(ECHO, INPUT);

    //TRIG pin must start LOW
    digitalWrite(TRIG, LOW);
    delay(30);
    }

    int getCM() {
    //Send trig pulse
    digitalWrite(TRIG, HIGH);
    delayMicroseconds(20);
    digitalWrite(TRIG, LOW);

    //Wait for echo start
    while(digitalRead(ECHO) == LOW);

    //Wait for echo end
    long startTime = micros();
    while(digitalRead(ECHO) == HIGH);
    long travelTime = micros() – startTime;

    //Get distance in cm
    int distance = travelTime / 58;

    return distance;
    }

    int main(void) {
    setup();
    printf(“Distance: %dcm\n”, getCM());
    return 0;
    }
    bu kodlara while döngüsü eklemek istiyorum yardımcı olabilir misin

  5. er_nd dedi ki:

    While döngüsünü nereye yazmalıyım?

    #include
    #include
    #include

    #define TRIG 22
    #define ECHO 25

    void setup()
    {
    wiringPiSetupGpio();
    pinMode(TRIG, OUTPUT);
    pinMode(ECHO, INPUT);

    //TRIG pin must start LOW
    digitalWrite(TRIG, LOW);
    delay(30);
    }

    int getCM() {
    //Send trig pulse
    digitalWrite(TRIG, HIGH);
    delayMicroseconds(20);
    digitalWrite(TRIG, LOW);

    //Wait for echo start
    while(digitalRead(ECHO) == LOW);

    //Wait for echo end
    long startTime = micros();
    while(digitalRead(ECHO) == HIGH);
    long travelTime = micros() – startTime;

    //Get distance in cm
    int distance = travelTime / 58;

    return distance;
    }

    int main(void) {
    setup();
    printf(“Distance: %dcm\n”, getCM());
    return 0;
    }

  6. eren dedi ki:

    buradaki while döngüsünü C# dilinde bir koda yapıştırsak çalışır mı?

er_nd için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir