Merhabalar yukarıda belirttiğim gibi 3 adet ultrasonik sensörden her biri için 1 adet olmak üzere 3 buzzerdan ses almak istiyorum park sensörü gibi. A sensörü tespit yapınca A buzzerı ötecek B sensöründe B buzzerı şeklinde. Kodunu yazmakta sıkıntı çekiyorum. Kontrol etmeme rağmen kod hata verip duruyor. Yardımcı olursanız sevinirim.
Duyuru
Çöküş
Henüz duyuru yok
Aynı anda 3 adet ultrasonik sensörden 3 farklı buzzer ile dönüt alma
Çöküş
X
-
Aslı zafercopur tarafından gönderilmiş Mesajı göster3 tane mesafe sensörünü deneyap kartın 5 voltluk yerinden tek olarak beslerseniz yetersiz gelebilir. Harici bir kaynaktan beslemeniz sensörün verimli çalışmasını sağlayacaktır.
Kodları buraya eklerseniz hata varsa size cevap veren birisi olabilir
#include "deneyap.h" //deneyap.h kütüphanemizi import ediyoruz
#include "hcsr04ESP32.h" //sensör kütüphanesini import ediyoruz
#define trigPin D0
#define echoPin D1
#define trigPina D8
#define echoPinb D9
#define buzzer D4
#define buzzer2 D5
UltraSonicDistanceSensor distanceSensora(trigPin, echoPin);
UltraSonicDistanceSensor distanceSensorb(trigPina, echoPinb); // Ultrasonik sensor pin konfigurasyonu
void setup () {
Serial.begin(9600); // Seri haberleme baslatildi
pinMode(buzzer, OUTPUT); //buzzerın bağlı olduğu dijital pin çıkış olarak ayarlanır
pinMode(buzzer2, OUTPUT);
}
void loop () {
float mesafe = distanceSensora.measureDistanceCm();
float mesafe2 = distanceSensorb.measureDistanceCm();
Serial.println(mesafe); // Ultrasonik olcum yapiliyor ve seri terminale veri gonderiliyor
Serial.println(mesafe2);
//sensör geçersiz aralıkta (2 cm den az veya 400 cm den fazla) bir ölçüm yapmaya çalıştığında negatif değer döndürür. Bu durumu if bloğunda kontrol ediyoruz
if (mesafe < 0 ){
Serial.println("Mesafe ölçülemedi veya geçerli aralıkta değil");
}
else{
//belirli mesafe aralıklarında buzzer dan farklı aralıklarla ses çıkartıyoruz. 20 cm den azsa sürekli, 20 - 40 cm aralığında ise 50 ms aralıklarla, 40 - 60 cm aralığında 100 ms aralıklarla buzzer dan ses çıkartılır. 100 cm den uzunsa ses çıkartılmaz
if(mesafe<20){
digitalWrite(buzzer,1);
}
else if(mesafe<80){
delay(50);
digitalWrite(buzzer,1);
delay(50);
digitalWrite(buzzer,0);
}
else if(mesafe<120){
delay(150);
digitalWrite(buzzer,1);
delay(150);
digitalWrite(buzzer,0);
}
else if(mesafe<160){
delay(500);
digitalWrite(buzzer,1);
delay(500);
digitalWrite(buzzer,0);
}
else{
digitalWrite(buzzer,0);
}
}
if (mesafe2 < 0 ){
Serial.println("Mesafe ölçülemedi veya geçerli aralıkta değil");
}
else{
//belirli mesafe aralıklarında buzzer dan farklı aralıklarla ses çıkartıyoruz. 20 cm den azsa sürekli, 20 - 40 cm aralığında ise 50 ms aralıklarla, 40 - 60 cm aralığında 100 ms aralıklarla buzzer dan ses çıkartılır. 100 cm den uzunsa ses çıkartılmaz
if(mesafe2 <20){
digitalWrite(buzzer2,1);
}
else if(mesafe2 <80){
delay(50);
digitalWrite(buzzer2,1);
delay(50);
digitalWrite(buzzer2,0);
}
else if(mesafe2 <120){
delay(150);
digitalWrite(buzzer2,1);
delay(150);
digitalWrite(buzzer2,0);
}
else if(mesafe2 <160){
delay(500);
digitalWrite(buzzer2,1);
delay(500);
digitalWrite(buzzer2,0);
}
else{
digitalWrite(buzzer2,0);
}
}
}
Yorum Yap
-
Hata veriyor yazmışsınız. Hata mesajını buraya yazarsanız yardımcı olunabilir.
Çok bildiğim bir şey değil ama dikkatimi çektiğinden yazıyorum. Bu kod sizin belirttiğiniz işi yapmaz.
Kod:delay(500); digitalWrite(buzzer2,1); delay(500); digitalWrite(buzzer2,0);
Bence çoklu mesafe sensörünün bu şekilde kodlanmaması gerekiyor. Loop prosedüründe, buzzerlerin ayrı ayrı çalma süreleri hesaplanmalı, çalması gereken başlatılmalı, loop her çalıştığında süreler kontrol edilmeli, çalma süresi biten kapatılmalı, diğeri çalmaya devam etmeli.En son düzenleyen Çağrı; 09-02-2021, 12:24 AM.
Yorum Yap
Yorum Yap