hc-sr04 ile mesafe ölçümü

Rapor et
Soru

Bu soru rapor edilmelidir hissediyorum neden kısaca açıklayınız.

Rapor et
İptal

hc-sr04 mesafe sensörü ve lcd keypad shield kullanarak boy ölçümü yapmak istiyorum. Yaptığım düzenek bir button ile ilk mesafeyi alıyor sonrasında birisi altına geçip boy ölçümüne bastığında ilk mesafeden ikinci sonucu çıkarıp kişinin boyunu cm cinsinden ekrana yazdırıyor. Ancak sensör tutarlı sonuçlar vermiyor iki metrelik alandan ilk mesafe almaya çalıştığımda bazen  90-100 cm gibi olmayacak değerler alıyor. sensör nadiren doğru ölçüm yapıyor nedeni nedir sizce? (sensörü değiştirdim, arduino kartıda kontrol ettim)

<pre>

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int button = 0;
int okunan_deger = 0;
unsigned long sure;
int mesafe;
int ilkmesafe = 0;

#define trigPin 3
#define echoPin 11
#define sag 0
#define yukari 1
#define asagi 2
#define sol 3
#define sec 4
#define yok 5

byte button_bul()
{
okunan_deger = analogRead(A0);
if(okunan_deger > 1000)
return yok;
if(okunan_deger < 50)
return sag;
if(okunan_deger < 195)
return yukari;
if(okunan_deger < 380)
return asagi;
if(okunan_deger < 555)
return sol;
if(okunan_deger < 790)
return sec;

}

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin,INPUT);
pinMode(button,INPUT);

lcd.begin(16, 2);
lcd.home();
}

void loop()

{
lcd.setCursor(0,0);

button=button_bul();

if(button==0){
lcd.clear();
ilkmesafe=mesafeolc();
lcd.setCursor(0,0);
lcd.println(“kalibre edildi”);
lcd.setCursor(0,1);
lcd.println(ilkmesafe);
delay(5000);
lcd.clear();
lcd.setCursor(0,0);
lcd.println(“Olcum icin”);
lcd.setCursor(0,1);
lcd.println(“select basiniz…”);}

if(button==1){
lcd.clear();
ilkmesafe=ilkmesafe+1;

lcd.setCursor(0,1);
lcd.println(ilkmesafe);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.println(“Olcum icin”);
lcd.setCursor(0,1);
lcd.println(“select basiniz…”);}

if(button==2){
lcd.clear();
ilkmesafe=ilkmesafe-1;

lcd.setCursor(0,1);
lcd.println(ilkmesafe);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.println(“Olcum icin”);
lcd.setCursor(0,1);
lcd.println(“select basiniz…”);}

if(button==4 ){
lcd.clear();

mesafe=ilkmesafe-mesafeolc();

lcd.setCursor(0,0);
lcd.println(“BOYUNUZ”);
lcd.setCursor(0,1);

lcd.println(mesafe);
lcd.println(“cm”);
delay(2000);}
}

int mesafeolc(){
digitalWrite(trigPin, HIGH); /* Sensore ses dalgasının üretmesi için emir verildi */
delay(1);
digitalWrite(trigPin, LOW); /* Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi */
sure = pulseIn(echoPin, HIGH); /* ses dalgasının geri dönmesi için geçen sure ölçülüyor */
mesafe= (double)sure*0.034 /2; /* ölçülen sure uzaklığa çevriliyor */

return mesafe;
}

</pre>

1
Diğer 2 sene 0 Cevap 462 görüntüleme Intern 0

Yazar HakkındaIntern

Cevap bırak

Gözat

KOD PAYLAŞIRKEN DİKKAT!!!!

HTML kod paylaşmak için

<pre class="html">HTML KOD</pre>
XML kod paylaşmak için
<pre class="xml">XML KOD</pre>
Diğer dillerde(php,java,android,javasvript,c# vs..) kod paylaşmak için
<pre>KOD</pre>
tagları arasında paylaşmayı unutmayın.