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ış.
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.
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.
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
1 Beğeni
Bağlantıları kontrol eder misiniz?
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.