back to top

Arduino Temelleri 16: Elektronik Metre Nasıl Yapılır? – (Dijital Metreyi Kendin Yap!)

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");
}

Son Çıkan Yazılar

77 YORUMLAR

    • Hocam Tubitak projelerimiz için tinkercadden den çizimler yaptık ama 3d yazıcımız olmadığı için çıktı alamıyoruz. Yardımcı olabilirmisiniz?

  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. 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

  7. 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.

  8. 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

  9. 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

  10. hiç hiç beğenmedik. malzemeleri sipariş ettiğimizde gelenler çok eksikti. breadboard yoktu, kablolar yanlıştı. kodu doğru girdik ama olmadı. bu konuda bize yardımcı olursanız sevinmeyiz.

  11. Ekranın alt bölümünde kare kutucuklar oluşuyor ancak metinsel ifadeler görüntülenemiyor. Bağlantıları kontrol ettim ancak sorunu tespit edemedim , yardımcı olur musunuz?

    • Videoda delay kodu gösterilmiş ancak paylaşılan kodlarda delay olmadığı için ekranda yazılar görünmüyor.

      Şimdiki sorunum ekranda yazılar mevcut ancak sürekli 0 cm gösteriyor. Mesafe değerlerini sürekli 0 gösteriyor.

  12. Hocam ben butun baglantilari tipatip ayni malzemelerle yaptim fakat pc ye baglayinca lcd ekrani arka plan yanmiyo enerji gitmiyor sknti nedir ?

  13. Arduino:1.8.12 (Windows 10), Kart:”Arduino Uno”

    readme.txt:8:57: error: expected unqualified-id before ‘.’ token

    int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; .

    ^

    C:\Users\W10USER\Documents\Arduino\libraries\readme.txt\readme.txt.ino: In function ‘void setup()’:

    readme.txt:14:3: error: ‘lcd’ was not declared in this scope

    lcd.begin(16, 2);

    ^~~

    C:\Users\W10USER\Documents\Arduino\libraries\readme.txt\readme.txt.ino: In function ‘void loop()’:

    readme.txt:24:3: error: ‘lcd’ was not declared in this scope

    lcd.clear();

    ^~~

    exit status 1
    expected unqualified-id before ‘.’ token

    C:\Users\W10USER\Documents\Arduino\libraries\readme.txt içerisinde geçersiz kütüphane bulundu: no headers files (.h) found in C:\Users\W10USER\Documents\Arduino\libraries\readme.txt
    C:\Users\W10USER\Documents\Arduino\libraries\readme.txt içerisinde geçersiz kütüphane bulundu: no headers files (.h) found in C:\Users\W10USER\Documents\Arduino\libraries\readme.txt

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

CEVAP VER

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