wmaraci

Dot Matrix ve Arduino ile Saat Yapalım

Please log in or Kaldol to like posts.
Yazı

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 Pin Arduino Pin DHT11 Pin Arduino Pin RTC Pin Arduino Pin
CLK pin 13 DATA pin 2 CLK pin 6
DATA pin 11 VCC 5 V DAT pin 7
CS pin 10 GND GND RST pin 8
VCC 5 V VCC 5 V
GND GND GND GND

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!

wmaraci

Bir cevap yazın

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