Mesafe Sensörü Yardım!

Kodla Büyü

gelincik55

Üye
Mesajlar
19
Merhaba arkadaşlar. Arduino ile yeni çalışmaya başladım. Mesafe sensörü ile ölçüm yapmaya çalışıyorum fakat aldığım sonuç mesafe sıfır oluyor sensörde mi sorun var anlamadım. Eğer sorun sensördeyse değişim için göndericem fakat yeni başladığım için emin olamadım. Farklı kaynaklardan aldığım kodları birebir ekliyorum fakat sonuç aynı oluyor. Yardımcı olabilir misiniz? kullandığım kodları da ekliyorum sonuç ekranını da.
view

Ekran Alıntısı.JPG

byte trigger = 10; // Sensörün Trigger bacağının bağlı olduğu pin
byte echo = 11; // Sensörün Echo bacağının bağlı olduğu pin

unsigned long sure; // Echo bacağının kac mikro saniyede aktif olduğunu saklayacak olan değişken
double toplamYol;
int aradakiMesafe;


void setup() {
pinMode(trigger, OUTPUT); // Sensörün Trigger bacağına gerilim uygulayabilmemiz için OUTPUT yapıyoruz.
pinMode(echo, INPUT); // Sensörün Echo bacağındaki gerilimi okuyabilmemiz için INPUT yapıyoruz.
Serial.begin(9600);
}
void loop()
{
/* Başlangıçta LOW durumda olan trigger bacağına gerilim uygulayıp ardından gerilimi keserek bir ses dalgası
oluşturmuş oluyoruz. Bu işlem arasında 10 mikro saniye beklenmenin sebebi HC-SR04'ün en az 10 mikro saniyelik
dalgalar ile çalışmasıdır. */
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);

// Dalga üretildikten sonra geri yansıyıp Echo bacağının HIGH duruma geçireceği süreyi pulseIn fonksiyonu ile
// kaydediyoruz.
sure = pulseIn(echo, HIGH);

// Aşağıda yapılan süre-mesafe dönüşüm işlemleri yazımızda açıklanmıştır.
toplamYol = (double)sure*0.034;
aradakiMesafe = toplamYol / 2;

Serial.print("Ses dalgasinin geri donus suresi :");
Serial.print(sure);
Serial.println("mikro saniye");

Serial.print("Ses dalgasinin toplam kat ettigi yol :");
Serial.print(toplamYol);
Serial.println("cm.");

Serial.print("HC-SR04 ile karsisindaki yuzey arasindaki mesafe :");
Serial.print(aradakiMesafe);
Serial.println("cm.\n\n");

delay(2000);
}
 
hocam ben şu şekilde yapıyorum


const int t_pin=11;
const int e_pin=12;
int sure ;
int mesafe;
void setup() {
pinMode(t_pin, OUTPUT);
pinMode(e_pin, INPUT);
Serial.begin(9600);
}
void loop()
{
digitalWrite(t_pin,HIGH);
delayMicroseconds(1000);
digitalWrite(t_pin,LOW);
sure=pulseIn(e_pin,HIGH);
mesafe=(sure/2)/29.1; // 29.1 odanın ısı sıcaklığı ile alakalı, 28 de olabilir 30 da
Serial.println(mesafe);


}
 
Son düzenleme:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
157
213
217
-513
0
0
0
438
0
0
0
299
0
0
0
0
0
-397
503
0
0
-519
183
-269
420
0
0
0
0
0
0
0
0
0
198
-499
-292
496
429
312
0
0
0
0
0
0
0
0
0
-541
0
0
0
126
162
245
168
kablolara dokunduğumda bu şekilde değerler değişiyor. onun dışında hep 0 gösteriyor.
 
Sanırım dediğiniz gibi kablolarda sorun var. Yeni kablolarla deneyeceğim şuan elimde yok. Teşekkür ederim cevaplarınız için.
 
HC-SR04 Mesafe sensörünü kullanırken NewPing kütüphanesini kullanmayı deneyin. Ayrıca bu sensörler de zaten çok kararlı şeyler değil. Bunlarla ciddi proje üretmek zor daha çok basit eğitsel şeyler yapmak için ulaşılabilir ucuz ürünlerdir.
 
  • Beğen
Tepkiler: omd
Hocam stabil çalışmıyor maalesef. Aldığınız değerler normal. Newping kütüphanesini kullanın bir de değişken kullanmayın doğrudan işlemi yazdırın. Şöyle :
Serial.println((sure/2)/29.1);
 
  • Beğen
Tepkiler: omd
Geri
Üst