Dot Matrix ve Arduino ile Saat Yapalım

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 Nedir? Arduino ile Nasıl Kullanılır?


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.

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.

https://arduinohocam.com/

Bir cevap yazın

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