#include <RTClib.h>
#include <Wire.h>
RTC_DS3231 rtc;
char t[32];
#define clk 12 //define the pins for clk and data here
#define data 10
unsigned long concatenatedTime=0;
unsigned long time = 0;
int n1 = 0 ;
int n2 = 0 ;
int n3 = 0 ;
int n4 = 0 ;
int n5 = 0 ;
int n6 = 0 ;
int nA0[] = {1, 1, 1, 0, 1, 1, 1, 1};
int nA1[] = {1, 0, 0, 0, 0, 0, 1, 1};
int nA2[] = {1, 1, 0, 1, 1, 1, 0, 1};
int nA3[] = {1, 1, 0, 1, 0, 1, 1, 1};
int nA4[] = {1, 0, 1, 1, 0, 0, 1, 1};
int nA5[] = {0, 1, 1, 1, 0, 1, 1, 1};
int nA6[] = {0, 1, 1, 1, 1, 1, 1, 1};
int nA7[] = {1, 1, 0, 0, 0, 0, 1, 1};
int nA8[] = {1, 1, 1, 1, 1, 1, 1, 1};
int nA9[] = {1, 1, 1, 1, 0, 1, 1, 1};
int nAoff[] = {0, 0, 0, 0, 0, 0, 0, 1};
int nB0[] = {1, 1, 1, 1, 1, 1, 1, 0};
int nB1[] = {1, 0, 0, 1, 1, 0, 0, 0};
int nB2[] = {1, 1, 1, 0, 1, 1, 0, 1};
int nB3[] = {1, 0, 1, 1, 1, 1, 0, 1};
int nB4[] = {1, 0, 0, 1, 1, 0, 1, 1};
int nB5[] = {1, 0, 1, 1, 0, 1, 1, 1};
int nB6[] = {1, 1, 1, 1, 0, 1, 1, 1};
int nB7[] = {1, 0, 0, 1, 1, 1, 0, 0};
int nB8[] = {1, 1, 1, 1, 1, 1, 1, 1};
int nB9[] = {1, 0, 1, 1, 1, 1, 1, 1};
int nBoff[] = {1, 0, 0, 0, 0, 0, 0, 0}; //define diffrent numbers here
//. S1.S2.S3 S4 S5 S6 S7 D1.D2.S8 S9 S10S11S12S13S14
void pulseClk()
{//toggles clk
digitalWrite(clk, true); //pulse clk
digitalWrite(clk, false);
}
void sendNumber(int segments[])
{//writes out the given number to the display
for (int i = 0; i < 8; i++)
{
digitalWrite(data, segments[i]);
pulseClk();
}
}
void setup()
{
Serial.begin(9600);
Wire.begin();
rtc.begin();
//rtc.adjust(DateTime(F(__DATE__),F(__TIME__)));
//rtc.adjust(DateTime(2024, 1, 21, 5, 44, 0));
pinMode(clk, OUTPUT);
pinMode(data, OUTPUT);
digitalWrite(data, false);
digitalWrite(clk, false);
}
void loop()
{
RTC_Time();
int n6 = time % 10;
time /= 10;
int n5 = time % 10;
time /= 10;
int n4 = time % 10;
time /= 10;
int n3 = time % 10;
time /= 10;
int n2 = time % 10;
time /= 10;
int n1 = time % 10;
Serial.println(n1);
Serial.println(n2);
Serial.println(n3);
Serial.println(n4);
Serial.println(n5);
Serial.println(n6);
displaynum1(n1);
displaynum2(n2);
displaynum1(n3);
displaynum2(n4);
displaynum1(n5);
displaynum2(n6);
delay(200);
}
////////////////////////////////////
void displaynum1(int number1)
{
switch (number1)
{
case 0:
sendNumber(nA0);
break;
case 1:
sendNumber(nA1);
break;
case 2:
sendNumber(nA2);
break;
case 3:
sendNumber(nA3);
break;
case 4:
sendNumber(nA4);
break;
case 5:
sendNumber(nA5);
break;
case 6:
sendNumber(nA6);
break;
case 7:
sendNumber(nA7);
break;
case 8:
sendNumber(nA8);
break;
case 9:
sendNumber(nA9);
break;
}
}
//////////////////////////////////////////////////////
void displaynum2(int number2)
{
switch (number2)
{
case 0:
sendNumber(nB0);
break;
case 1:
sendNumber(nB1);
break;
case 2:
sendNumber(nB2);
break;
case 3:
sendNumber(nB3);
break;
case 4:
sendNumber(nB4);
break;
case 5:
sendNumber(nB5);
break;
case 6:
sendNumber(nB6);
break;
case 7:
sendNumber(nB7);
break;
case 8:
sendNumber(nB8);
break;
case 9:
sendNumber(nB9);
break;
}
}
void RTC_Time()
{
DateTime now = rtc.now();
sprintf(t, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
Serial.print(F("Time: "));
Serial.println(t);
String concatenatedTimeString = String(now.hour()) + String(now.minute()) + String(now.second());
// Convert the concatenated string to an integer
concatenatedTime = concatenatedTimeString.toInt();
time=concatenatedTime;
Serial.println(time);
delay(1000);
}