/*
* This ESP32 code is created by esp32io.com
*
* This ESP32 code is released in the public domain
*
* For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-rtc
*/
#include <RTClib.h>
RTC_DS3231 rtc;
/*
char daysOfWeek[7][12] = {
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
};*/
uint16_t rakam[]={63,6,91,79,102,109,125,7,127,111};
uint16_t seg[]={0,1,2,3,4,5};
uint16_t yenizaman=0;
uint16_t eskizaman=0;
unsigned long yenimilis=0;
unsigned long eskimilis=0;
unsigned long ledblink=0;
uint16_t saniye=10;
uint16_t dakika=07;
uint16_t saat=11;
bool led;
uint16_t st=14;
uint16_t sh=12;
uint16_t dt=27;
uint16_t ld=26;
void setup () {
Serial.begin(9600);
pinMode(st, OUTPUT);
pinMode(sh, OUTPUT);
pinMode(dt, OUTPUT);
pinMode(ld, OUTPUT);
rtc.begin();
/*
// SETUP RTC MODULE
if (! rtc.begin()) {
Serial.println("RTC module is NOT found");
Serial.flush();
while (1);
}*/
// automatically sets the RTC to the date & time on PC this sketch was compiled
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
rtc.adjust(DateTime(2024, 4, 28, 8, 38, 30));
// manually sets the RTC with an explicit date & time, for example to set
// January 21, 2021 at 3am you would call:
// rtc.adjust(DateTime(2021, 1, 21, 3, 0, 0));
}
void loop () {
DateTime now = rtc.now();
//ledblink=millis();
saniye=now.second();
dakika=now.minute();
saat=now.hour();
yenizaman=saniye;
yenimilis=millis();
if(yenimilis-eskimilis>500){
eskimilis=yenimilis;
digitalWrite(ld, 0);
}
if(yenizaman!=eskizaman){
eskizaman=yenizaman;
digitalWrite(ld, 1);
digitalWrite(st, LOW);
seg[0]=saniye%10; ekran(seg[0]); // saniyenin birler hanesi
seg[1]=(saniye/10)%10; ekran(seg[1]); // saniyenin onlar hanesi
seg[2]=dakika%10; ekran(seg[2]); // dakikanın birler hanesi
seg[3]=(dakika/10)%10; ekran(seg[3]); // dakikanın onlar hanesi
seg[4]=saat%10; ekran(seg[4]); // saatin birler hanesi
seg[5]=(saat/10)%10; ekran(seg[5]); // saatin onlar hanesi
digitalWrite(st, HIGH); digitalWrite(st, LOW);
}
/*
Serial.print("ESP32 RTC Date Time: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
*/
/* delay(1000); // delay 1 seconds*/
}
void ekran(int number){
for(int x=7;x>=0;x--){
digitalWrite(dt,bitRead(rakam[number],x));
digitalWrite(sh, HIGH);
digitalWrite(sh, LOW);
}
}