Merhaba arkadaşlar bugünkü yazımda 4’lü 7 segment display kullanarak arduino ile dijital saat yapacağız. 4’lü 7 segment display hakkında bilgisi olmayan veya nasıl kullanıldığını bilmeyenler daha önce yazmış olduğum bu yazıma bakabilirsiniz.

Malzeme Listesi

Devre Şeması

    Devremiz aslında çok basit bir şekilde olacaktır. Devremizde bir adet arduino uno, bir adet dörtlü 7 segment display ve saat modülü kullanacağız. Saat modülünü ilk defa kullananlar bu yazımıza bakarak saat modülünün kullanımı ve saat ayarlanma işlemlerini yapabilir. Bu işlemleri yaptıktan sonra yapmamız gereken sadece devreyi kurup, arduino kodunu yüklemek. Normalde dörtlü 7 segment displayi arduino unoya bağlayınca pin sayısı 2 adet kalıyor. Bu projeyi yapmak için arduino mega gerekebilirdi ama ben analog pinlerini de kullanarak saat modülünü o şekilde bağladım. Bu sayede arduino uno ile uygulamamızı yapabileceğiz.

Uygulama Kodları

   Uygulama kodları aşağıdaki gibidir. Kodların ne işe yaradığını daha ayrıntılı anlamak için daha önce yazmış olduğum ve detaylıca anlatmış olduğum bu yazıma bakabilirsiniz. Buradaki kodların tek farklı ekstra olarak rtc saat modülümüzün kodları vardır. Daha önce yapmış olduğumuz RTC saat modülü kullanımı için bu yazıma bakabilirsiniz. Ekrana sayı yazdırma kısmında ise ilk önce saat bilgisini modülden okuma işlemini yapıp 100 ile çarpıp daha sonra dakika bilgisini okuyup üstüne eklemek gerekiyor. Saati ekranda göstermek için 4 basamaklı bir sayıya çevirmek gerekiyor. Bu işlemler ile yapıp daha sonra int saat adında değişken oluşturuyoruz. Hesapladığımız bu değeri saat değişkenine aktarıp daha sonra da saat değişkenini ekrana yazdırıyoruz. Bu işlem her saniyede yapılıyor.

   Örnek olarak saatimiz 12:40 olsun. Saat kısmını elde ediyoruz ve 100 ile çarpıyoruz(12×100). 1200 değerini elde ettik. Daha sonra ise 1200 değerine 40 ekleyerek 1240 olmasını sağlıyoruz. Yani 4 basamaklı bir sayı elde ediyoruz. Bu sayımızda 12’yi 40 geçiyor anlamına gelmektedir. ekran.setNumber(saat,2) kısmındaki 2 sayısı da 2.noktayı aktif etmiş oluyor. Saatimiz 12.40 şeklinde gözüküyor. Bu ekranımızda iki nokta ‘:’  işareti olmadığı için biz nokta ‘.’  kullanarak 12.40 şeklinde saatimizi gösterdik.

    Saat modülü ve 4’lü 7 segment displayı kullanmak için kütüphanelerin indirilmesi gereklidir. Bu kütüphaneleri buradan ulaşabilirsiniz ve kütüphane kurulumunda sorun yaşarsanız bu yazıma göz atabilirsiniz.

#include "SevSeg.h"
#include <virtuabotixRTC.h>
virtuabotixRTC Saat(A0, A1, A2);
SevSeg ekran;
unsigned long sure = millis();
void setup() {
  byte basamak = 4;
  byte digitPin[] = {2, 3, 4, 5};
  byte segmentPin[] = {6, 7, 8, 9, 10, 11, 12, 13};
  byte tur = COMMON_CATHODE; //COMMON_CATHODE veya COMMON_ANODE
  bool direnc = false;
  bool otosure = false;
  bool sifirlar = true;// Gizlemek için false yapınız.
  ekran.begin(tur, basamak, digitPin, segmentPin, direnc, otosure, sifirlar);
  ekran.setBrightness(90); //Ekran Parlaklığı
  // saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl
  //Saat.setDS1302Time(50, 02, 21, 7, 7, 2, 2021);
}
void loop() {
  if (millis() - sure >= 1000) { // 1 Saniye aralıklar ile saat verisini oku ve göster
    sure = millis();
    Saat.updateTime(); // Saati Güncelle
    int saat = Saat.hours * 100 + Saat.minutes; //Saati Oku ve hesapla
    ekran.setNumber(saat, 2); //2.kısma nokta koyar
  }
  ekran.refreshDisplay();
}

Uygulama Videosu

Arduino ile Dijital saat uygulamamız hakkında merak ettiklerinizi veya anlamadığınız şeyleri yorum olarak sorabilirsiniz. İyi çalışmalar dilerim 🙂

7 YORUMLAR

CEVAP VER

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