Arduino 4 Digit 7 Segment Display Saat Uygulaması

Kendi dijital masa saatinizi yapmak istermisiniz. Cevabı evet olanları buraya toplayalım. Arduino kullanarak kısa sürede kendi saatinizi yapabilirsiniz. Üstelik kendi saatiniz olduğu için kendiniz kendi isteklerinize göre saatinizi şekillendirebilirsiniz. Bu yazı serimizde ilk olarak bir saat yapıp sonra bu saati geliştireceğiz alarm ekleyeceğiz internete bağlayacağız aklımıza ne geliyorsa o yönde geliştirmeler yapacağız. İlk olarak saatimizi yapmak için ihtiyacınız olan elemanları alıyoruz.

  • 1 tane gerçek zaman saat modülü
  • 1 tane 4 digit 7 segment display
  • Bağlantı için jumper kablolar
  • Arduino Mega

Arduino mega kullanmamız gerekyor çünkü 4 digit 7 segment display biraz fazla pin tüketiyor 🙂 Evet elemanlarımızı topladıktan sonra birkaç kütüphane kullanmamız gerekiyor.

Piyasada çeşitli gerçek zaman saat modülü var arkadaşlar ben DS1032 RTC modülü kullanıyorum çünkü elimde bu modül vardı. RTC için kütüphaneyi buradan indirebilirsiniz.

4 digit 7 segment display için kütüphaneye de buradan ulaşabilirsiniz.

Kütüphaneleri taslak -> library ekle -> zip kitaplığı ekle bölümünden direk ekleyebilirsiniz.

Kütüphaneleri indirip ekledikten sonra yapmamız gereken bağlantı ve kodlama kalıyor.

4 digit 7 segment displayin bağlantısını resimde gösterildiği gibi yapabilirsiniz.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bağlantı arduino uno üzerinde gösterilmiş fakat çok farkı yok mega üzerinde de yine aynı pinlere bağlantı yapacağız.

RTC modülümüzün bağlantısını da şu şekilde yapacağız

 

 

RTC VCC -> Arduino 5v

RTC GND -> Arduino GND

RTC CLK -> Arduino 50.pin

RTC DAT -> Arduino 51.pin

RTC RST -> Arduino 52.pin

 

 

 

 

RTC Bağlantısı da bu şekilde yaptıktan sonra kodlama kısmına geçebiliriz.

#include <DS1302.h>
#include "SevSeg.h"
Time t;
DS1302 rtc(52, 51, 50);
SevSeg sevseg;
void setup()
{
  rtc.halt(false);
  rtc.writeProtect(false);
  rtc.setDOW(FRIDAY);       
  rtc.setTime(15, 05, 30);   //Saati ayarlıyoruz.
  rtc.setDate(17,7, 2018);  //Tarihi ayarlıyoruz.
  byte numDigits = 4;
  byte digitPins[] = {9, 10, 11, 12};
  byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 13};
  bool resistorsOnSegments = false; 
  byte hardwareConfig = COMMON_ANODE; 
  bool updateWithDelays = false;
  bool leadingZeros = false; 
  sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros);
  sevseg.setBrightness(90);
  Serial.begin(9600);
}
void loop()
{  
 t = rtc.getTime();
 int saat = t.hour*100; //4 haneli olması için saati 100 le çarpıyoruz
 int dakika = t.min; //dakikayı direk alıyoruz.
 int yazdir = saat+dakika; //direk toplayarak saat ifadesini alıyoruz.
 sevseg.setNumber(yazdir,2); //,2 nin anlamı . ifadesini nereye konulacağını belirtmek
 sevseg.refreshDisplay(); //displayi yeniliyoruz..
}

Kodlar bukadar arkadaşlar çok deneme imkanım olmadı buglar olabilir kullandıkça fark ettikçe düzenlemeler yapabilirim arkadaşlar sizin de gördüğünüz hatalar öneriler varsa uyarabilirsiniz. Kolay gelsin

4 comments

  1. Bu kodu 2 segment ile çalışacak şekilde nasıl düzenleyebiliriz. ben istiyorum ki tuşa bastığımda ilk önce 1 sn saati daha sonra 1 sn dakikayı gösterip kapansın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir