Arduino dot Matrix rtc analog saat projesi

Arduino üzerinden dot Matrix LED ve rtc modülü ile yapılan bir analog saat projesi gördüm. Bu projeyi yapmaya çalışıyorum fakat şematiği ve hangi parçaların kulannıldığı yazmıyor devredeki en alt sağ köşedeki parça nedir acaba tüm + ve - hatlar oraya bağlanmış.

8DiCFGy_d 8DiCFGy_d~2

Merhaba,
Muhtemelen açma/ kapama düğmesi olsa gerek.
Malzemeler;

#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. Kodu atığınız zaman güncelemeyi unutmayın
   myRTC.setDS1302Time(00, 48, 11, 4, 10, 1, 2021); //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);
 }

Saatimiz güncelledikten sonra bu kodları atabiliriz;

#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

Kolay gelsin. :slightly_smiling_face:

Cevap için teşekkürler denedim söylediklerinizi fakat dht11 kütüphanesiyle ilgili bir sorun çıkıyor. Rica etsem yalnızca rtc modülü ve dot matrix led kullanılan bir yöntem önerebilir misiniz? Ve lütfen bu çözümü denerken 4 adet dot matrix kullanılan bir şema çizebilir misiniz?
Yapmaya çalıştığım projenin videosu => LED Dot Matrix Analog Clock - YouTube.

DHT kodlarını silebilirsin direk bir sıkıntı çıkmaz. :grinning_face_with_smiling_eyes:

Ayrıca @ElectroHands in attığı bir dijital saat

Analog saat kodları bunlar fakat malzemer biraz değişecek birazadn atıcağım:

// Comment out if using the non-SPI version of the library
#define SPIWrite

// Include the LedMatrix library
#ifdef SPIWrite
#include <LedMatrixSPI.h>
#else
#include <LedMatrix.h>
#endif

const byte NUM_ROWS = 6;               // Number of 8x8 display rows
const byte NUM_COLS = 8;               // Number of 8x8 display columns
const byte maxWidth = NUM_COLS * 8;    // Maximum display width
const byte maxHeight = NUM_ROWS * 8;   // Maximum display height
const double rads = 0.0174532925;      // Used for clock demo

/*
 Create an LedMarix object
 The first parameter is the number of 8x8 dot matrix
 rows, the second is the number of columns. 
*/
#ifdef SPIWrite
LedMatrixSPI lm = LedMatrixSPI(NUM_ROWS, NUM_COLS);
#else
LedMatrix lm = LedMatrix(NUM_ROWS, NUM_COLS);
#endif

void setup() {
  // put your setup code here, to run once:

}

void loop() {

   int16_t sHand, mHand, hHand, center;
   uint8_t centerX = maxWidth / 2 - 1;
   uint8_t centerY = maxHeight / 2 - 1;
   
   // Set the start time
   int hour = 1;
   int minute = 4;
   int second = 40;
   
   // Set the length of each hand
   int shLen = 23;
   int mhLen = 16;
   int hhLen = 10;

   // Find the center
   if (maxWidth > maxHeight)
      center = (maxHeight / 2) - 1;
   else
      center = (maxWidth / 2) - 1;

   // Run the clock for some amount of time
   while(1) {

      // Calculate the degree each had is pointed
      sHand = round((360 * second / 60) - 90);
      mHand = round((360 * minute / 60) - 90);
      hHand = round((360 * hour   / 12) - 90);

      lm.clear(); // Clear the LED array, but not the screen
      lm.circle(centerX, centerY, center);  // Draw the clock

      // Draw the 3 hands
      lm.line(centerX, centerY, centerX + round(shLen * cos(sHand * rads)), centerY + round(shLen * sin(sHand * rads)));
      lm.line(centerX, centerY, centerX + round(mhLen * cos(mHand * rads)), centerY + round(mhLen * sin(mHand * rads)));
      lm.line(centerX, centerY, centerX + round(hhLen * cos(hHand * rads)), centerY + round(hhLen * sin(hHand * rads)));
      
      lm.update();   // Update the display
      delay(975);    // Delay almost a second (leave time for program overhead)
      second++;      // Increment the seconds

      // Reset seconds and increment minutes
      if (second > 59) {
         second = 0;
         minute++;
      }
      // Reset minutes and increment hours
      if (minute > 59) {
         minute = 0;
         hour++;
      }
      // Reset hours
      if (hour > 11) {
         hour = 0;
      }
   }

}

Silip denedim fakat bu seferde de ledler yanmadı sadece 1 ledin 2 karesi yandı o kadar

Bu kodlara sahibim fakat devre şemasını tam olarak bilmediğim için + ve - hatları boşta kalıyor.

Adam yapım için verdiği github linki:

  • ve - leri paralel olarak bağlayabilirsin.

Github linkine girdim kütüphaneyi kurdum fakat şematik hakkında bilgi vermemiş hiç. Bu + ve - hatları ilk attığım fotoğrafta küçük bir alete bağlamış direkt - hattına yalnızca son leddeki gnd hattını bağlamış. O küçük alet nedir acaba bilginiz var mı?

büyük ihtimalle bir anahtar devreyi açıp kapatmak için linkteki gibi bir şey kullanabilirsin.

Peki toplam 4 tane + ve 4 tane - hattı var - leri paralel bağlayıp anahtara bağladım diyelim + ları nasıl bağlamam gerekiyor.

onlarıda paralel bağlayıp direk arduinoya bağla ya da - leri direk arduinoya bağlayıp + ları anahtar ile kontrol edebilirsin.

+ları direkt + hattına - leri direkt - hattına çektim şu şekilde:

  • Lar alt alta - Ler alt alta elimde anahtar yokmuş bu yüzden bu şekilde yaptım saat çalışıyor fakat yalnız 1 tane 4lü 8*8 dot Matrix çalışıyor şu şekilde:

Tıpkı adamın yaptığı gibi dönüyor fakat 1 LED çalışıyor sadece.

Az kaldı hissedebiliyorum :sweat_smile:

1 Beğeni

Bağlantıları kontrol eder misiniz? :grinning_face_with_smiling_eyes:

Galiba Lehimlerde bir sorun var tam anlayamadım ama bakacağım eğer çözüme ulaşamazsam tekrar yazarım çok teşekkürler <3.