Arduino
OKUDUĞUNUZ KONU
Arduino ile Mesafe Ölçme 7 Segment Display
18

Arduino ile Mesafe Ölçme 7 Segment Display

Yazar : Alieren Safi26 Aralık 2015

Herkese merhaba. Bugün Arduino ve HC-SR04 mesafe sensörü kullanarak mesafe ölçme işlemini 7-Segment led ile birlikte yapacağız.

Malzeme listesi:

  • Arduino Mega (Uno veya mini ile de yapabilirsiniz)
  • HC-SR04 Ultrasonik mesafe sensörü
  • 4-Digit 7-Segment Led
  • Yeteri kadar Jumper kablo

Mesafe’yi Lcd’ye yazdıran projeye buradan ulaşabilirsiniz.

Biz bu projede mesafeyi 7-Segment Led’e yazdıracağız. 7-Segment LED ondalık sayıların gösteriminde kullanılan elektronik bir görüntülüme cihazdır. ” a , b , c , d , e , f , g , p ” şeklinde isimlendirilen toplamda 8 adet LED’den oluşmaktadır.

 

Öncelikle kullanacağımız 7-Segment LED display’in arduino kütüphanesini indirip bilgisayarınıza yüklemeniz gerekmektedir. Aşağıda verdiğim link ile Arduino Kodunu ve Kütüphaneyi Yükleyebilirsiniz.

Projede ultrasonik sensör pinleri:

  • Trig — pin 11
  • Echo — pin 12
  • Vcc — +5V
  • GND — GND

4-digit 7-segment LED display pinleri :

  • a — 22
  • b — 23
  • c — 24
  • d — 25
  • e — 26
  • f — 27
  • g — 28
  • D1 — 4
  • D2 — 5
  • D3 — 6
  • D4 — 7
  • GND — GND

 

Arduino Kodu ve Gerekli Kütüphane: Arduino Kodunu ve Kütüphaneyi Buradan Yükleyebilirsiniz.Sorunuz olursa yorum gönderiniz.

 // Alieren Safi Tarafından Düzenlenmiştir. ( Designed By Alieren Safi... )
 
#include <SevSeg.h> // 7-segment Led'e ait kütüphanemizi Tanımlıyoruz.
SevSeg sevseg;
 
#define trigPin 11 //Sensörün Echo pini Arduinonun 11. pinine bağlanır.
#define echoPin 12 //Sensorün Trig pini Arduinonun 12. pinine bağlanır.
 
void setup()
{
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);          //trig pini çıkış olarak ayarlıyoruz.
  pinMode(echoPin, INPUT);           //echo Pini giriş olarak ayarlıyoruz.
  byte numDigits = 4;                //7-segment Ledimizin 4digit olduğunu belirtiyoruz.
  byte digitPins[] = {4, 5, 6, 7};   //Digit pinlerimizi belirtiyoruz (Sırasıyla D1,D2,D3,D4)
  byte segmentPins[] = {22, 23, 24, 25, 26, 27, 28, 29};     //7-segment'e ait a,b,c,d,e,f,g ve nokta pinlerimizi sırasıyla belirliyoruz.
  sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins);     //Burada COMMON_ANODE ortak anot'lu 7segment led kullandığımızı belirtiyor.
  //sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins); //Ortak katotlu kullanıyorsanız bu satırı kullanın.
  sevseg.setBrightness(50);     //Ledlerimizin Parlaklığını Ayarlıyoruz.
}
 
void loop() {
    long gecenSure, uzaklik;
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    gecenSure = pulseIn(echoPin, HIGH);
    uzaklik = (gecenSure / 2) / 29.1;         //Ölçüm işlemi (Sonucu cm olarak hesaplıyoruz.Gerekli matematiksel işlemleri yapıp miimetre yada metre olarak ayarlayabilirsiniz.)
    int a = uzaklik;
    sevseg.setNumber(a, 1);
    sevseg.refreshDisplay();  //7-segment Led'imizi sıfırlıyoruz. (ledleri söndürüyoruz.)
}
SİZCE NASIL OLMUŞ?
Beğendim
79%
İlginç
3%
Eh İşte
0%
Anlamadım
14%
Kötü
2%
Berbat
2%
YAZAR HAKKINDA
Alieren Safi
Alieren Safi
Elektrik-Elektronik Mühendisliği öğrencisiyim. Elektroniğe meraklı biriyim. Her ne kadar bu konuda profesyonel olmasamda ,elektronikle ilgilenen arkadaşlara yardımcı olabileceğimi düşünüyorum.
18 YORUMLAR
  • Faruk Tunçel
    26 Aralık 2015 at 15:13

    Merhaba projenizi uyguladım ve çalıştırdım. Mesafeyi metre cinsinden yazmak için yazılımda nasıl bir modifikasyon yapmam gerek yardımcı olursanız çok memnun olurum.Çalışmalarınızda başarılar dilerim. teşekkürler.

    • Alieren Safi
      Alieren Safi
      26 Aralık 2015 at 16:23

      Merhaba Faruk. Mesafeyi metre olarak göstermek için Arduino kodunda ki “uzaklik” değişkeninin 100’de birini almanız yeterli. Yani uzaklik = uzaklik / 100; yazmanız yeterli olacaktır. iyi çalışmalar.

  • Furkan NAMLI
    26 Aralık 2015 at 15:14

    Gayet başarılı buldum. Öğretici, açıklaması sade ve öz iyi bir proje.

  • Elif Eda
    26 Aralık 2015 at 16:58

    bu şekilde park sensörü yapılabilirmi acaba

  • salih ipek
    8 Şubat 2016 at 15:07

    merhaba, bilgisayar öğretmeniyim ben, proje olarak öğrencilerime yaptırmayı planlıyorum bu mesafe program-devresini.
    en fazla kaç metreye kadar ölçüm yapıyor acaba çalıştıran arkadaslar test ettiler mi acaba?

  • Kadir Demirtaş
    12 Mart 2016 at 22:12

    merhababar… paylaşımınız için çok teşekkür ederim… bunu mega ile yapmışsınız uno ile yapmaya çalıştım ama pin sayısı yeterli değil… ne yapabilirim ?

  • Meriç ASLAN
    12 Nisan 2016 at 13:31

    uno’da 14 digital pin bulunuyor. mesafe sensörü 2 digital pin kullanır. 4 digit 11 digital pin kullanıyor. uno yeterli gelecektir.

  • Kadir Demirtaş
    14 Mayıs 2016 at 17:45

    digit sayısını 2 yaparak çözdüm sorunu…. şu anda çalışıyor… ama mesafe değişimlerinde rakamlar değişirken çok titreme oluyor.. yani sanki algılama tepki verme hızı çok hızlı.. hassasiyetle alakalı sanırım… örneğin 13 den 14 e geçerken titremeden düzgün ve yavaşça geçmesini sağlamanın bir yolu var mıdır ?

  • Gültekin
    6 Haziran 2016 at 11:08

    analog pinleri D14, D15, D16 diye devam ettirip digital pin olarak kullanabilirsiniz. selamlar. kolay gelsin.

  • Muhammet Emin Çetkin
    12 Haziran 2016 at 02:14

    Hocam sana yemin ediyorum sadece rakam yazmak için büssrü şey aradaım türkçe kaynak bulamadım işte tek tek rakamların segmentlerı kodlanmıs baktım denedım beceremedım. türkçe kaynak bulamadım zaten şu kütüphaneyide aradım ingilizcem yeterli olmadığı için bulamadım ama sonunda buldum sadece rakam yazmak için o kadar 3-4 saat 4×7 display kodlanmasına baktım yemın ederım sızın sayenızde ulaştım şu kısayola varya nasıl sevaba girdiniz hocam valla.

  • mehmet donmez
    28 Temmuz 2016 at 00:05

    ben biraz farklı yaptım . oldu
    arduino nano baglantısı
    d2 b
    d3 d3
    d4 d2
    d5 f
    d6 a
    d7 d1
    d8 e
    d9 d
    d10 h
    d11 c
    d12 g
    d13 d4

    HCSR04
    5v vcc
    A0 trig
    A1 Echo
    GND GND

    Kod :

    #include “SevSeg.h”

    SevSeg sevseg; //Instantiate a seven segment controller object

    #define trigPin 14 //Sensörün Echo pini Arduinonun 11. pinine bağlanır.
    #define echoPin 15 //Sensorün Trig pini Arduinonun 12. pinine bağlanır.

    void setup() {
    Serial.begin(9600);
    pinMode(trigPin, OUTPUT); //trig pini çıkış olarak ayarlıyoruz.
    pinMode(echoPin, INPUT); //echo Pini giriş olarak ayarlıyoruz.
    byte numDigits = 4;
    byte digitPins[] = {7, 4, 3, 13};
    byte segmentPins[] = {6, 2, 11, 9, 8, 5, 12, 11};

    sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins);
    sevseg.setBrightness(50);
    }

    void loop() {
    long gecenSure, uzaklik;
    digitalWrite(trigPin, LOW);
    delayMicroseconds(5);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    gecenSure = pulseIn(echoPin, HIGH);
    uzaklik = (gecenSure / 2) / 29.1;

    int a = uzaklik;
    sevseg.setNumber(a, 1);
    sevseg.refreshDisplay();
    }

  • Hasan
    7 Aralık 2016 at 21:55

    Merhabalar burada kotot display kullanmış ben anot kullanıyorum ve arduino uno ile yapacağım nasıl yapacağım şeklini ve kodları atabilirsiniz
    Teşekkürler

    • Hasan
      7 Aralık 2016 at 22:01

      Displayin bağlantısı nasıl olacak birde max7219 kullanan programda ne gibi değişiklik gerekir yine arduino uno çıkışına bagliyacagım
      Yardımcı olursanız çok iyi olur yoksa proje dersinden kalıcam

  • 18 Aralık 2016 at 21:00

    acaba Arduino Uno R3 Şemasını da yükleyebilirmisiniz ? okul projesi olarak götürmek istiyorum şimdiden tşekürler…

  • Halil güner
    10 Nisan 2017 at 16:15

    mesafe ölçmek derken nasıl anlamadım bu projeyi yapmak istiyorum ödev olarak yardımcı olabilirmisiniz ?

YORUM YAP