Merhaba arkadaşlar, bu uygulamamızda HC-SR04 ile park sensörü yapımı uygulaması gerçekleştireceğiz.


Malzeme Listesi:


Buzzer kullanımı ledlere benzer bir şekildedir. Buzzer’da uzun bacak anot (+) ve kısa bacak katot (-)‘tur ve kullanılırken buna dikkat edilmelidir. Aşağıdaki devre şemasında buzzer‘ın anot ucu kırmızı ve katot ucu da siyah olarak gösterilmiştir. Devre şemamızı breadboard üzerine kuralım ve kod kısmına geçelim.

Kodumuza geçelim. Bu uygulamada fonksiyon yapılarını kullanacağız ve bize getirdiği kolaylıkları öğreneceğiz. Fonksiyonlar genel olarak belirli bir kod bloğunun birden fazla kullanılması durumunda kullanılır ve kodumuzun anlaşılırlılık seviyesini artırır. Başlangıçta gerekli pin ve değişken tanımlamalarını yapalım.

#define trig_Pin 8
#define echo_Pin 9
#define buzzer_Pin 10
long mesafe = 0;
long sure = 0;
int gosterge = 0;
void setup() {
for (int i = 2; i < 7; i++)
{
pinMode(i, OUTPUT);
}
pinMode(trig_Pin, OUTPUT);
pinMode(echo_Pin, INPUT);
Serial.begin(9600);
}
void loop() {
buzzer_uyari(mesafe_olc() * 8);
gosterge = mesafe_olc() / 10 + 1;
for (int i = 7; i > gosterge; i–)
{
digitalWrite(i, HIGH);
}
for (int i = gosterge; i >= 2; i–)
{
digitalWrite(i, LOW);
}
}
int mesafe_olc() {
digitalWrite(trig_Pin, HIGH);
delayMicroseconds(1000);
digitalWrite(trig_Pin, LOW);
sure = pulseIn(echo_Pin, HIGH);
mesafe = (sure / 29.1) / 2;
if (mesafe > 50)
mesafe = 50;
Serial.print("Olculen Mesafe = ");
Serial.print(mesafe);
Serial.println(" cm ");
return mesafe;
}
void buzzer_uyari(int bekle)
{
tone(buzzer_Pin, 500);
delay(bekle);
noTone(buzzer_Pin);
delay(bekle);
}

void setup() kısmında giriş, çıkış pinlerini belirtelim ve seri haberleşmeyi 9600 baud rate hızında başlatalım.

buzzer_uyari(mesafe_olc() * 8); buzzer_uyari() adlı fonksiyona belirli değişkenler verilerek çağırılır ve verilen değişkenlere göre buzzer‘ın çıkarmış olduğu ton seviyesi değişmektedir. Bu değişkenlerden mesafe_olc()‘te bir fonksiyondur ve daha önce yapmış olduğumuz uygulamadaki mesafe ölçme kodunu barındırır ve bize dönüt olarak mesafe bilgisini integer formatında verir ve 8 ile çarpılarak buzzer_uyari() adlı fonksiyona süre bilgi olarak girilir. Bu fonksiyonlar void loop() döngüsü dışında tanımlanmıştır.

gosterge = mesafe_olc() / 10 + 1; Buradaki denklemde mesafe_olc() fonksiyonundan alınan bilgi belirli matematiksel işlemler sonucunda 1 ile 6 arasına sınırlandırılır.

For döngüleri ile mesafenin durumuna göre ilgili gösterge (kırmızı) ledler yanmaktadır. Örneğin ölçülen mesafe 10 cm ise bütün ledler yanar, mesafe 50 cm’den fazla ise hiçbir led yanmaz.

void buzzer_Pin( int bekle) fonksiyonunda kullanmış olduğumuz tone(buzzer_Pin,500); ile buzzer‘a bip sesine benzer ses çıkarması için gerekli tone bilgisi verilir.

delay(bekle); ile daha önce değişken olarak verilen mesafe*8  bekleme süresini belirler ve buzzer sesi kapatılır ve aynı şekilde bekleme süresi kullanılır. Bu döngü fonksiyon çağrıldıkça gerçekleştirilir. Çağrılmaktan kastımız loop döngüsü içerisinde kullandığımız buzzer_uyari(mesafe_olc() * 8); kod bloğudur.

Seri ekranımızı açtığımızda yukarıdaki gibi ölçülen mesafeyi göstermesi gerekiyor. Ayrıca önündeki engele uzaklığına göre ledlerin kademeli olarak yanıp sönmesi gerekmekte. Tüm bunlar olurken buzzer’ın da ledlerle kalibre bir şekilde ötmesi gerekmektedir. Eğer takıldığınız bir yer veya sormak istediğiniz bir şey olursa size yardımcı olmayı çok isteriz. Bu nedenle yorum yazmaktan çekinmeyin!


HC-SR04 ile park sensörü uygulamamız işinize yaradıysa ve hoşunuza gittiyse diğer derslerimize göz atmayı unutmayın 🙂

robolinkmarket.com

8 YORUMLAR

  1. 8. for (int i = 7; i > gosterge; i–) satırda hata veriyor hocam. exit status 1 it was not declared in this scope uyarısı var sebebi ne olabilir?

    • Merhaba,
      for (int i = 7; i > gosterge; i- -) şeklinde yazdığınız zaman hata vermemesi gerekmektedir. Parantezin sonundaki i- – olmalı i- olması hata verdiriyor olabilir. Bunu deneyip çalışmazsa tekrar dönüş yaparsanız yardımcı olmaya çalışırız.
      İyi günler, iyi çalışmalar.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz