Herkese merhabalar! Bu yazımızda önceki yazılarımızda yakından tanıdığımız dot matrixlerden yararlanarak bir saat projesi gerçekleştireceğiz. Eğer dot matrixler ile ilgili önceki yazımıza göz atmadıysanız öncelikle onu okumanızı tavsiye ederiz.


Dot matrix üzerinde saat dışında DHT11 sensörünü kullanarak ısı ve nem değerlerini de görebileceğiz. Aynı zamanda projeyi kutulayarak devamlı olarak kullanabilirsiniz. Biz kutulama yapmadığımızdan dolayı Arduino Uno kullandık, ancak projenizi sabit hale getirecekseniz Arduino Nano kullanmanızı tavsiye ederiz.

Malzemeler

NOT: Eğer projenizi bir adaptör ile beslemeyecekseniz 9 V pil ve pil yuvasını da malzemelerinize eklemelisiniz. Projenizi kutulamayı düşünürseniz proje kutularına göz atabilirsiniz.


PİN BAĞLANTILARI
Dot Matrix PinArduino PinDHT11 PinArduino PinRTC PinArduino Pin
CLKpin 13DATApin 2CLKpin 6
DATApin 11VCC5 VDATpin 7
CSpin 10GNDGNDRSTpin 8
VCC5 VVCC5 V
GNDGNDGNDGND

Proje Kodu

Dot matrix yazısında yaptığımız projede LedControl kütüphanesini kullanmıştık. Bu projede ise daha fazla fonksiyona sahip, işimizi çok daha az kod kullanarak çözmemizi sağlayacak bir kütüphane kullanacağız. Dot matrixi kullanmamızı sağlayacak MD_MAX72XX ve MD_Parola kütüphaneleriyle beraber DHT sensörü ve RTC modülü kütüphanelerini kodumuza ekliyoruz.

Asıl kodumuzu eklemeden önce RTC modülümüzün saat ayarını yapmamız gerekiyor. Kod içerisindeki myRTC.setDS1302Time() fonksiyonu içine güncel tarih ve saat değerlerini doğru sırayla giriyoruz. Ayarlamayı yaptıktan sonra seri monitör yardımıyla doğru değerleri girip girmediğimizi kontrol ediyoruz.

#include <virtuabotixRTC.h>     //Kütüphanemizi ekliyoruz

virtuabotixRTC myRTC(6, 7, 8); //pin tanımlamaları
void setup() {
Serial.begin(9600);

//Bu kısımda saat ayarlamasını yapıyoruz
myRTC.setDS1302Time(00, 59, 23, 5, 10, 3, 2019); //saniye, dakika, saat, haftanın günü, gün, ay, yıl
}
void loop() {
myRTC.updateTime();
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.println(myRTC.seconds);
delay(1000);
}
Dot Matrix Saat Kodu

Saat ayarımızı yaptıktan sonra proje kodumuzu Arduino’ya yüklüyoruz.

#include <MD_Parola.h>       //Kütüphanelerimizi ekliyoruz
#include <MD_MAX72xx.h>
#include <virtuabotixRTC.h>
#include "DHT.h"

#define DHTPIN 2 //DHT pin tanımlaması
#define DHTTYPE DHT11 //DHT modeli tanımlaması
DHT dht(DHTPIN, DHTTYPE);

int CLK = 6; //RTC modülümüzün pin bağlantılarını tanımlıyoruz
int DAT = 7;
int RST = 8;
virtuabotixRTC myRTC(CLK, DAT, RST);

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4 //4 Dot Matrix kullanacağımızdan dolayı 4 seçiyoruz
#define CLK_PIN 13 //Dot matrix board pin tanımlamaları
#define DATA_PIN 11
#define CS_PIN 10

MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

const long int WAIT_TIME = 1000;
void setup()
{
P.begin();
dht.begin();
}
void loop()
{
myRTC.updateTime(); //Zaman güncellemesi
int h = dht.readHumidity(); //Nem değerini alıyoruz
int t = dht.readTemperature(); //Sıcaklık değerini alıyoruz
if(myRTC.minutes<10 && myRTC.minutes>=0)
P.print(" " + String(myRTC.hours) + ":" + "0" + String(myRTC.minutes)); //Dakika değeri 0-9 aralığındaysa formatı bozmamak için başına 0 ekleyerek yazdırıyoruz
else
P.print(" " + String(myRTC.hours) + ":" + String(myRTC.minutes)); //Saat yazdırma
delay(2000);
P.print(" "+String(t)+" C"); //Sıcaklık değeri yazdırma
delay(2000);
P.print(" %" + String(h)); //Nem değeri yazdırma
delay(2000); //2 saniye bekleme
}

Bir tavsiye: Dot matrixin önüne yarı saydam bir nesne koyarsanız çok daha net ve güzel bir görüntü elde edebilirsiniz.

Projemizi tamamladık, bu haliyle yalnızca saat, nem ve sıcaklık değerlerini gösteriyor. Bu projeyi nasıl geliştirebiliriz, başka ne gibi eklemeler yapabiliriz? Benim aklıma bir alarm modu eklemek geldi mesela, yorumlarda fikirlerinizi bekliyoruz. Aynı zamanda dot matrixlerle yapılabilecek proje fikirlerinizi de yorumlarda bekliyorum 🙂 Başka bir projede görüşmek dileğiyle, hoşça kalın!

9 Yorumlar

    • Merhaba, örnekler kısmından kullandığımız kütüphanedeki örnek uygulamalara bakabilirsiniz.
      Dosya->Örnekler->MD_Parola->Parola_Scrolling Örneklerdeki uygulamalar yardımcı olacaktır.

    • Merhaba, Fritzing şemasından mı bahsediyorsunuz? Bağlantı şeması dışında şemanın altında pin bağlantılarını gösteren bir tablo ekledim oradan da yararlanabilirsiniz.

    • Yaklaşık 15 tane kullandık fakat jumper kablonun tipi ve sayısı bağlantıyı ne şekilde yapacağınıza göre değişebiliyor.

  1. merhaba tarih göstermiyordu tarihi göstermesi için aşağıdaki kodu yükledim ama tarih sığışmıyor.tarih kısmını kayan yazı yapmak için ne yapmam lazım.
    P.print(“” + String(myRTC.dayofmonth) + “.” + String(myRTC.month) + “.” + String(myRTC.year)); //tarih yazdırma
    delay(5000);

    • Merhaba, örnekler kısmından kullandığımız kütüphanedeki örnek uygulamalara bakabilirsiniz.
      Dosya->Örnekler->MD_Parola->Parola_Scrolling Örneklerdeki uygulamalar yardımcı olacaktır. Bizim koda uyarlayarak kullanabilirsiniz.

CEVAP VER

Please enter your comment!
Please enter your name here