Günlük hayatta 1 metreden büyük uzaklıkları ölçmek genelde 2 kişilik bir iştir. Bu projemizde Arduino ve Ultrasonik sensör yardımıyla sesin havada yayılma hızı bilgisini kullanarak gönderdiğimiz ses dalgasıyla yankı yaparak geri dönen ses dalgası arasında geçen süreyi hesaplayıp ses kaynağı ile karşıdaki nesnenin arasındaki mesafeyi tespit edeceğiz, bir diğer tabir ile mesafe ölçer uygulaması üzerinde çalışacağız. Arduino Dersleri serimizin bu bölümünde sizlerle beraber Dijital Metre yapacağız. Dijital metreyi ister mesafe ölçümlerinde ister park sensörü gibi uygulamalarda isterseniz de boy ölçer gibi uygulamalarda kullanabilirsiniz.

Bir önceki yazımızda uzaktan kumanda ile LED kontrolünden bahsetmiştik >>> Kızılötesi Kumanda ile LED Kontrol Uygulaması Yapalım !

Dijital Metreyi Kendin Yaparak 4m’ye Kadar Olan Mesafeleri Kolayca Ölç

Gerekli Malzemeler:

HC-SR04 Ultrasonik Sensör

HC-SR04, robotik projelerde Arduino ile kullanılan en popüler sensörlerden birisidir. Kullanımı oldukça kolaydır ve program kısmı düzgün olduğu sürece 2cm – 400cm arası uzaklıkları düzgün bir şekilde ölçebilmektedir. Çalışma prensibi ise şu şekildedir: Sensörün Trig pininden uygulanan sinyal 40 kHz frekansında ultrasonik bir ses yayılmasını sağlar. Bu ses dalgası herhangi bir cisme çarpıp sensöre geri döndüğünde, Echo pini aktif hale gelir. Biz ise bu iki sinyal arasındaki süreyi ölçerek -yani sesin yankısını algılayarak- cismin sensörden uzaklığını tespit edebiliriz.

Arduinoya LCD Nasıl Bağlanır?

Bağlantı Şeması

Eğer projenizi herhangi bir kutuya koymayacaksanız bağlantılarınızı aşağıdaki görsele bakarak yapabilirsiniz.

Arduino Dijital Metre Devresi

Bu projeyi çalıştırmamız için gereken kod aşağıdadır:

Kod:

#include  <LiquidCrystal.h>                            //LCD kütüphanemizi başlatıyoruz.
int trigPin = 7; //Ultrasonik sensör trig pini değişkeni
int echoPin = 6; //Ultrasonik sensör echo pini değişkeni
int sure; //Ses dalgasının gidip gelme süresi değişkeni
int uzaklik; //Ölçülen uzaklık değeri değişkeni
int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; //LCD'nin pin değişkenlerini tanımlıyoruz.
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //LCD'nin pin bağlantılarını ayarlıyoruz.
void setup() {
pinMode(trigPin, OUTPUT); //trig pinini OUTPUT olarak ayarlıyoruz.
pinMode(echoPin,INPUT); //echo pinini INPUT olarak ayarlıyoruz.
lcd.begin(16, 2); //LCD ekranımızın en-boy oranını ayarlıyoruz.
}
void loop() {
digitalWrite(trigPin, LOW); //Ultrasonik sensör ile ölçüm sekansını başlatıyoruz.
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
sure = pulseIn(echoPin, HIGH, 11600); //Ses dalgasının gidip gelme süresini ölçüyoruz.
uzaklik= sure*0.0345/2; //Ölçülen süre ile uzaklık hesabı yapıyoruz.
lcd.clear(); //LCD'deki eski yazılar temizlenir.
lcd.setCursor(0, 0); //LCD'nin 1. satır 1. sütunundan yazmaya başlıyoruz.
lcd.print("Uzaklik:");
lcd.setCursor(0, 1); //LCD'nin 2. satır 1. sütunundan yazmaya başlıyoruz.
lcd.print(uzaklik); //Uzaklık değerini LCD'ye yazdırıyoruz.
lcd.print("cm");
}

42 Yorumlar

  1. merhaba konrol et dediğimde

    java.lang.RuntimeException: /* yorum */ satırlarının sonunda eksik /* etiketi
    at processing.app.preproc.PdePreprocessor.scrubComments(PdePreprocessor.java:426)
    at processing.app.preproc.PdePreprocessor.writePrefix(PdePreprocessor.java:92)
    at processing.app.debug.Compiler.preprocess(Compiler.java:1257)
    at processing.app.debug.Compiler.preprocess(Compiler.java:1231)
    at processing.app.debug.Compiler.compile(Compiler.java:359)
    at processing.app.debug.Compiler.build(Compiler.java:122)
    at processing.app.Sketch.build(Sketch.java:1109)
    at processing.app.Sketch.build(Sketch.java:1084)
    at processing.app.Editor$BuildHandler.run(Editor.java:1955)
    at java.lang.Thread.run(Thread.java:745)
    /* yorum */ satırlarının sonunda eksik /* etiketi
    yazıyor nedeni ne olabilir

  2. Merhaba öncelikle püroje için teşekkürler lakin ben daha doru ve daha uzun ölçüm için lazer metre yapmak istiyorum bu konu ile bir proje yapım paylaşırsanız çok sevinirim iyi çalışmalar

    • Projede kullanılan sensör maksimum 4 metreye kadar ölçüm yapabilmektedir. Fakat sağlıklı ölçüm yapabilmeniz adına 2.5 metreye kadar ölçümlerde kullanmanızı tavsiye ederiz.

  3. Arduino:1.8.5 (Windows 10), Kart:”Arduino/Genuino Uno”

    C:\Users\PC\AppData\Local\Temp\arduino_modified_sketch_629118\sketch_may28a.ino:1:53: fatal error: NewPing.h: No such file or directory

    #include // HC-SR04 için Kod Kütüphanesi

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    bu hatanın nedeni ne olabilir

  4. Merhabalar ben bügün sitede verilen devreyi kurduğumda lcd ekran üzerinde kurduğumda ekranda degişik hareketler bazı yerlerde ölçmeme ve cm yazan yerin cmm ve cmmm diye kendilğinden değişmesi gibi sorunlar yaşadım sizce sorun neden kaynaklıdır ?

  5. Arduino:1.8.8 (Windows 10), Kart:”Arduino/Genuino Uno”

    elektronik_metre:5:1: error: stray ‘\303’ in program

    int süre;

    ^

    elektronik_metre:5:1: error: stray ‘\274’ in program

    elektronik_metre:27:2: error: stray ‘\303’ in program

    süre = pulseIn(echoPin, HIGH, 11600);

    ^

    elektronik_metre:27:2: error: stray ‘\274’ in program

    elektronik_metre:29:2: error: stray ‘\303’ in program

    uzaklik = süre ==0.0345/2;

    ^

    elektronik_metre:29:2: error: stray ‘\274’ in program

    elektronik_metre:5:8: error: expected initializer before ‘re’

    int süre;

    ^

    C:\Users\ILGAZ\Documents\Arduino\elektronik_metre\elektronik_metre.ino: In function ‘void loop()’:

    elektronik_metre:25:2: error: expected ‘;’ before ‘digitalWrite’

    digitalWrite(trigPin, LOW);

    ^

    elektronik_metre:27:2: error: ‘s’ was not declared in this scope

    süre = pulseIn(echoPin, HIGH, 11600);

    ^

    exit status 1
    stray ‘\303’ in program

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    Hatalarını alıyorum. Yardım edebilir misiniz?

  6. HOCAM BU İŞ BENİM PROJE ÖDEVİM ANCAK HOCA OLED EKRANLA İSTİYOR NASIL YAPABİLİTİM YARDIMCI OLURMUSUNUZ SİMDİDEN TEŞEKKÜRLER

  7. yaptım ama çalışmıyor ekrana ışık gelmiyor. lehim yapmadım onunla alakalı olabilir mi? ekranı pinlerin üstüne koydum sadece

  8. bende de aynı sorun var şu an kodları zaten kopyala yapıştır yaptım. kütüphane #include . araştırdım #include kütüphanesini kullanın demişler ama oda no matching function for call to ‘LiquidCrystal_I2C.h::LiquidCrystal_I2C.h(int, int&, int&, int&, int&, int&, int& )’ şeklinde hata veriyor

    • Merhaba, koddaki kütüphane kısmı bloga eklenirken kaybolabiliyor. Kodu güncelledim, tekrar deneyebilir misiniz?

  9. hem videodan hem şemadan 4-5 kez söküp yeniden yaptım kodu kopyaladım yapıştırdım. ekran ışığı var fakat yazı gelmiyor. potansiyometreyi çevirdiğimde hiç bir değişiklik olmuyor..

    • Lcd’yi breadboarda konumlandırma şeklinizin şemadaki gibi olmasına dikkat edin. Buna bağlı olarak pin sırasını ters yapmış olabilirsiniz. Açıkçası bağlantı problemi dışında bir problem gelmedi aklıma. Onun dışında her şeyden eminseniz harici olarak Lcd ekranınızı test edip ekrandan kaynaklanan bir sorun olup olmadığına bakabilirsiniz.

  10. MERHABA LCD EKRANIMIZDA KARE KARE ŞEKİLLER VAR HER YOLU DENEDİK FAKAT OLMUYOR KİTAPLIKTA KODDA SIKINTI FALANDA YOK SADECE YENİ ÇIKAN LCD MODELİNİ KULLANIYORUZ

  11. Merhaba aşşağıdaki linkten siparişi verdim lcd ekran geldi ama videodaki gibi takmak için dişleri bulunmuyor yarına projemi yapmam gerekiyor yardımcı olur musunuz

CEVAP VER

Please enter your comment!
Please enter your name here