Arduino projemizde HC-SR04 Ultrasonic Mesafe Sensörünü kullandık.
Devre Şeması:

Arduino Programında HC-SR04 sensörü ile önündeki cisim arasındaki mesafeyi Arduinonun hesaplamasını sağladık. Cisme olan uzaklığa göre BUZZER ve LED’lerin çalışmasını sağladık.
Arduino Programı:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
/* "HC-SR04 Ultrasonik Mesafe Sensörü kullanarak Park Sensörü" Arduino ile HC-SR04 kullanarak cisimle olan mesafeye göre BUZZER ve LEDleri çalıştıran park sensörü programı. <u>diyot.net</u> */ const int trig = 2; // değişkenler tanımla. const int echo = 3; int mesafe; int zaman; const int buzzer = 4; const int kirmizi = 5; const int sari = 6; const int yesil = 7; const int mavi = 8; void setup() { pinMode(trig,OUTPUT); // trig pini çıkış olsun. pinMode(echo,INPUT); // echo pini giriş olsun. pinMode(buzzer,OUTPUT); // buzzer pini çıkış olsun. pinMode(sari,OUTPUT); pinMode(yesil,OUTPUT); pinMode(mavi,OUTPUT); <b>Serial</b>.begin(9600); // seri haberleşme başlat. } void loop() { digitalWrite(trig,HIGH); delay(1); digitalWrite(trig,LOW); // 1 msn aralıklarla trig pinini HIGH yap. zaman=pulseIn(echo,HIGH); mesafe=(zaman/2)/28.9; // sıcaklık 25 derece için katsayı=28,9 <b>Serial</b>.println("UZAKLIK ="); <b>Serial</b>.print(mesafe); <b>Serial</b>.println("cm"); <b>Serial</b>.println("--------------------------"); if ((mesafe >= 0) && (mesafe <= 10)){ //mesafe 0 ile 10cm arasındaysa... digitalWrite(kirmizi,HIGH); digitalWrite(buzzer,HIGH); delay(50); digitalWrite(kirmizi,LOW); digitalWrite(buzzer,LOW); delay(250); } else if ((mesafe >= 10) && (mesafe <= 30)){ //mesafe 10cm-30cm arasındaysa... digitalWrite(sari,HIGH); digitalWrite(buzzer,HIGH); delay(50); digitalWrite(sari,LOW); digitalWrite(buzzer,LOW); delay(500); } else if ((mesafe >= 30) && (mesafe <= 50)){ //mesafe 30cm-50cm arasındaysa... digitalWrite(yesil,HIGH); digitalWrite(buzzer,HIGH); delay(50); digitalWrite(yesil,LOW); digitalWrite(buzzer,LOW); delay(750); } else if(mesafe >= 50){ //mesafe 50cm'den büyükse... digitalWrite(mavi,HIGH); delay(50); digitalWrite(mavi,LOW); delay(1000); } else if(mesafe <= 0){ //mesafe 0'dan küçükse... digitalWrite(buzzer,LOW); digitalWrite(kirmizi,LOW); digitalWrite(sari,LOW); digitalWrite(yesil,LOW); digitalWrite(mavi,LOW); } } |
Mesafe hesaplandıktan sonra Serial.println komutuyla seri port ekranından mesafe değerini yazdırdık. if-else komutları ile hesaplanan “mesafe” değerine bağlı olarak yapılacak işlemleri belirledik.
- Eğer “mesafe” 0 ile 10cm arasındaysa; Kırmızı LED ve BUZZER 50msn çalışıp 250msn duracak. Kırmızı LED çok hızlı yanıp sönerken, BUZZER’da kırmızı LED’e çıkardığı sesle eşlik edecek.
- Eğer “mesafe” 10cm ile 30cm arasındaysa; Sarı LED ve BUZZER 50msn çalışıp 500msn duracak. Sarı LED kırmızı LED’e göre daha yavaş yanıp sönerken, BUZZER’da sarı LED’e çıkardığı sesle eşlik edecek.
- Eğer “mesafe” 30cm ile 50cm arasındaysa; yeşil LED ve BUZZER 50msn çalışıp 750msn duracak. Yeşil LED sarı LED’e göre daha yavaş yanıp sönerken, BUZZER’da yeşil LED’e çıkardığı sesle eşlik edecek.
- Eğer “mesafe” 50cm’den büyükse; sadece mavi LED sürekli olarak 50msn yanıp 1sn sönük kalacak. Mavi LED 1sn aralıklı olarak yanıp sönecek.
- Eğer hesaplanan “mesafe” değeri 0’dan küçük çıktıysa; BUZZER ve tüm LED’lerin enerjisi kesilecek.
Seri Port Ekranına tıklayarak sensör ile cisim arasındaki mesafeyi eş zamanlı olarak ekrandan görebilirsiniz.
