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.

Yazıda Neler Var? 100TL üzeri %7 indirim kodunu unutma! maker7 gizle

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!

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

    • Merhaba, modülün iki tarafında da pin olduğunu göreceksiniz. Tek bir tanesi için bizim şemadaki bağlantıyı yaptıktan sonra geri kalan üçünü ard arda birleştirmeniz gerekiyor. Modülün öbür yanında boşta kalan pinleri diğerinin giriş pinine takarak devam etmeniz gerekiyor. CLK, CS, VCC ve GND pinleri aynı olacak fakat DOUT pinlerini diğer modülün DIN pini ile birleştirmeniz gerekiyor. Bunları uygulayarak ard arda istediğiniz kadar bağlayabilirsiniz.

  2. Ben matrixleri birleştirerek 4x8x8 i kendim yaptım ama yazıyı dinlemesine yazdırıyor onu nasıl yataya çevirebilirim

    • Merhaba, hatalar için şu yazıyı inceleyebilirsiniz: maker.robotistan.com/arduino-hata/

      COM portunu doğru seçtiğinizden emin olun.

    • Saat için soruyorsanız saat ayarını bir kere yaptıktan sonra modül üzerindeki pil sayesinde güncel saat hafızada saklanır. Tekrar tekrar kod atmanıza gerek yok.

  3. BAĞLANTILARI TEK-TEK MULTİ METREYLE KONTROL ETTİM KISADEVRE FELAN YOK BAĞLANTILARIM DOĞRU SAAT 0:12 BU ŞEKİL GÖSTERİYOR AMA SAYIYOR NEM VE SICAKLIK DA 0 YAZIYOR DHT ‘NIN LEDİ YANIYOR AMA DEGER LER YANLIŞ ???? NEDEN ACABA

    • Merhaba,
      Yanlış bir saat değeri alıyorsanız ilk kodu kullanarak ayarlamayı tekrar yapın ve kontrol edin. DHT kısmında da 0 almanızın sebebi sensörden veri alamamanız, bağlantıları tekrar kontrol etmenizde fayda var.

  4. Merhaba,
    Saat modülünün saat ayarının nasıl yapacaz? Ayrıca iki kodu birlikte mi kullanıyoruz yoksa sadece dot matrix saat kodu yazan ikinci kodu mu kullanıyoruz? Yardımcı olur musunuz?

    • Merhaba,
      İlk verdiğim kodu kullnarak saatinizi ayarlayın, sonrasında asıl kod olan ikinci kodu yükleyin. Saati ayarladıktan sonra ilk kodla bir daha işinizi olmayacak. Kolay gelsin 🙂

    • Bu projede kayan yazı kullanmadık fakat kütüphane içerisindeki örneklerden yararlanabilirsiniz.
      Dosya->Örnekler->MD_Parola->Parola_Scrolling Örneklerdeki uygulamalar yardımcı olacaktır.

    • Kısa devre durumlarından her zaman kaçınmak lazım ama altında iletken bir şey olmadığı sürece bir sıkıntı olmaz. Bağlantılardaki ani temassızlıklar tüm ledleri yakıyor olabilir.

  5. #define HARDWARE_TYPE MD_MAX72XX::FC16_HW FC16_HW yerine PAROLA_HW yazarsanız ekran kendisine geliyor yoksa saçmalıyor ekran karman çorban bir şey çıkartıyor

  6. Merrhaba iyi günler
    Benim yaptığım projede dotmatrix te yazılar tam olarak gözükmüyor parça parça gözüküyor bunu nasıl düzeltebilirim.?

    • Kullandığımız modül FC-16 tipi bir Dot Matrix modülü, bu yüzden koddaki HARDWARE_TYPE kısmına FC16_HW yazdık. Modülünüzün farklı olma ihtimaline karşı buradaki FC16_HW yerine PAROLA_HW yazarak kodunuzu tekrar yükler misiniz?

  7. int h = dht.readHumidity(); //Nem değerini alıyoruz

    satırında bu yazıda ilan edilmedi diyor ne yapmalıyım
    lütfen cevap verirmisiniz

  8. Hocam merhaba emeğinize sağlık,ben şöyle birşey yapmak istiyorum ama kod kısmında zorlanıyorum:sipariş proje gibi algılanmasın ama …
    Elimde Ardiuno uno,4×4 keypad ve 8×8 dotmatrix led ve entegresi mevcut.ben keypad den mesela 1 tusuna bastıgımda led de gülen surat oluşsa ve 9 tusuna bastıgımda uzgun surat oluşsa,bir tuştan diğerine hemen basılmasa;basarken bir gecikme olsa.
    ve bana saat 09 ile 16 arasında bir veri çıkarsa; 16 dan sonra gulen surat :)…tusa basılma sayısı / üzgun surat :(.. tuşa basılma sayısı…. şeklinde kayan yazı olarak gösterse ertesi gun 9 da veriler sıfırlanıp tekrardan başlasa….
    nasıl bir kod yazmalıyım.şimdiden tşkler

CEVAP VER

Please enter your comment!
Please enter your name here