Arduino hc sr004

  • Konbuyu başlatan Firadin
  • Başlangıç tarihi

Firadin

Üye
Katılım
15 Nis 2021
Mesajlar
4
Puanları
1
Yaş
23
Selamlar. Hc sr004 ses ile mesafe ölçen devre kurdum. Devrenin main kodlaması ı internetten alıp yaptım. Ancak bana sürekli mesafeyi veriyor ve ben ortalama mesafeyi görmek istiyorum ekranımda. Değerleri sürekli ölçmeye devam etsin fakat bi yandan da toplasın tüm değerleri sonra toplamı değer sayısına bölüp ortalamayı yazsın ekrana istiyorum. Aşağıda kodlaması bıraktım yardımcı olursanız sevinirim. İyi çalışmalar.

// This uses Serial Monitor to display Range Finder distance readings

// Include NewPing Library
#include "NewPing.h"

// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10
#define TRIGGER_PIN 9
#define ECHO_PIN 10

// Maximum distance we want to ping for (in centimeters).
#define MAX_DISTANCE 400

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

void setup()
{
Serial.begin(9600);
}

void loop()
{
// Send ping, get distance in cm
distance = sonar.ping_cm();

// Send results to Serial Monitor
Serial.print("Mesafe = ");

if (distance >= 400 || distance <= 2)
{
Serial.println("Out of range");
}
else
{
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}
 

rsimsek

Profesyonel Üye
Katılım
3 Haz 2010
Mesajlar
1,219
Puanları
283
Konum
Anadolu yakası
Hangi sıklıkla mesafeyi ölçecek? Aksi halde aynı mesafeyi sürekli yarım saniyede ölçtüğünden toplamanın anlamı olmaz. Okuma zaman aralıkları belli ise her okuduğunu bir değişkende toplayabilir ve topladıkça kaç ölçüm yaptığını da başka bir değişkende toplayıp sonuçta bu değleri birbirine bölüp ortalamayı alırsın. Ya da süre belli olmuyorsa bunu yaparken ölçümün sabit-kararlı hale gelmesini bekleyip ondan sonraki ölçülen mesafeyi dikkate almalısın.
 
Konu Sah

Firadin

Üye
Katılım
15 Nis 2021
Mesajlar
4
Puanları
1
Yaş
23
Ölçüm cihaz 10 cm mesafeden fazla bir aralığa denk geldiğinde ölçüm yapsın 10 cmin altına geldiğinde ölçümü durdursun. Ya da buton koyabilirim butona bastığımda ve 10 cm mesafeden fazla mesafe görürse ölçmeye ve değerleri sayıp toplamaya başlasın bunu nasıl yapabilirim. Teşekküre derim
 

rsimsek

Profesyonel Üye
Katılım
3 Haz 2010
Mesajlar
1,219
Puanları
283
Konum
Anadolu yakası
Buton koymak daha kolay gibi. Yoksa cihazın inisiyatifine bırakmakla olmaz. Sonuçta cihaz da verdiğiniz bir kritere göre karar verecek. mesela 2 saniyede mesafe değişmezse ölçümü kabul et gibi. Ya da dediğin gibi mesafeyi sabitleyip ölçmesi için bir düğmeye basmak gerekiyor. Kabaca şöyle bir şey olabilir;
Kod:
// This uses Serial Monitor to display Range Finder distance readings

// Include NewPing Library
#include "NewPing.h"

// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10
#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define BUTTON_PIN 2
float toplam_distance, toplam_olcum;

// Maximum distance we want to ping for (in centimeters).
#define MAX_DISTANCE 400

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

void setup()
{
  Serial.begin(9600);
  pinMode(BUTTON_PIN, INPUT)
  toplam_distance=0;
  toplam_olcum=0;
}

void loop()
{
  // Send ping, get distance in cm
  distance = sonar.ping_cm();

  // Send results to Serial Monitor
  Serial.print("Mesafe = ");

  if (distance >= 400 || distance <= 2)
  {
    Serial.println("Out of range");
  }
  else
  {
    Serial.print(distance);
    Serial.println(" cm");
    if (digitalRead(BUTTON_PIN)==HIGH))
    // butonu hassas algılaması için butonun bir önceki durumuna falan bakılmalı
    // ayrıca delay() yerine millis() fonksiyonundan yararlanmak gerekiyor.
    {
     toplam_distance+=distance;
     toplam_olcum++;
     // ortalamayı yazdırmak için de bir koşul belirlemek gerekiyor.
     // Serial.println(toplam_distance/toplam_olcum);

    }
  }
 
  delay(500);
}
 
Konu Sah

Firadin

Üye
Katılım
15 Nis 2021
Mesajlar
4
Puanları
1
Yaş
23
Ya da şöyle mi yapsak cihazı çalıştırdığım an ölçümlere başlasın ama mesafe 20 cmden fazla ise değeri kaydetsin değil ise değeri kaydetmesin sonra kaydettiği değerleri toplamı bölü kaydettiği değer sayısı böylelikle otomasyonda sağlamış oluruz. Bunu çözebikirsek çok sevinirim
 

rsimsek

Profesyonel Üye
Katılım
3 Haz 2010
Mesajlar
1,219
Puanları
283
Konum
Anadolu yakası
Evet, koşulun biri belli oldu. Sonrasında aynı ölçümü tekrarlamıyacağı bir koşul belirlemeliyiz.
 
Konu Sah

Firadin

Üye
Katılım
15 Nis 2021
Mesajlar
4
Puanları
1
Yaş
23
Aynı ölçümü tekrarlayabilir yeterki mesafe 20 cmden az olunca durdursun ölçümü ve değerleri kaydetmesin
 

Benzer Konular

Yeni mesajlar

Forum istatistikleri

Konular
116,053
Mesajlar
817,518
Kullanıcılar
423,737
Son üye
Fatih9161

Yeni konular

Üst