#define seven_datapin 2
#define seven_clk 4
#define seven_latch 3
#include "uRTCLib.h"
uRTCLib rtc(0x68);
byte seven_seg_data;
int year ;
int month ;
int day ;
int hour ;
int minute ;
int sec ;
int temp;
int modestate = 0;
int hourset = 0;
int minset = 0;
#define segA 5
#define segB 6
#define segC 7
#define segD 8
#define segE 9
#define segF 10
#define segG 11
#define blink 13
#define switchb 12
#define mode A0
#define inc A1
#define dec A2
int m;
unsigned long value = 0UL;
unsigned long maxValue = 10UL;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
delay(3000);
URTCLIB_WIRE.begin();
pinMode(seven_datapin,OUTPUT);
pinMode(seven_clk,OUTPUT);
pinMode(seven_latch,OUTPUT);
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(blink, OUTPUT);
pinMode(switchb, INPUT_PULLUP);
pinMode(mode, INPUT_PULLUP);
pinMode(inc, INPUT_PULLUP);
digitalWrite(A0, HIGH);
digitalWrite(A1, HIGH);
digitalWrite(A2, HIGH);
}
void loop(){
rtc.refresh();
year = rtc.year();
month = rtc.month();
day = rtc.day();
hour = rtc.hour();
minute = rtc.minute();
sec = rtc.second();
temp = 25;
bool switchbstate = digitalRead(12);
Serial.println(switchbstate);
if(hour >= 13){
hour = hour-12;
}
bool blinkState = sec % 2 == 0;
setblink(blinkState);
if(digitalRead(12)==LOW){
digitalWrite(seven_latch, LOW);
lightNumber(hour/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b10000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(hour%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b01000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(minute/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00100000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(minute%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00010000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(sec/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00001000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(sec%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000100);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
//Date
digitalWrite(seven_latch, LOW);
lightNumber(day/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b10000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(day%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b01000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(month/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00100000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(month%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00010000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(2);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00001000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(0);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000100);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(year/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000010);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(year%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000001);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
}
else if(digitalRead(12)==HIGH){
if(digitalRead(A0)==LOW){
modestate++;
Serial.print("Modestate = ");
Serial.println(modestate);
if(modestate>5){
modestate = 1;
}
}
if(modestate == 1){
if(digitalRead(A1)==LOW){
hour++;
Serial.print("hourset = ");
Serial.println(hour);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
if(digitalRead(A2)==LOW){
hour--;
Serial.print("hourset = ");
Serial.println(hour);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
digitalWrite(seven_latch, LOW);
lightNumber(hour/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b10000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(hour%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b01000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
}
if(modestate == 2){
if(digitalRead(A1)==LOW){
minute++;
Serial.print("minset = ");
Serial.println(minset);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
if(digitalRead(A2)==LOW){
minute--;
Serial.print("hourset = ");
Serial.println(hour);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
digitalWrite(seven_latch, LOW);
lightNumber(minute/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00100000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(minute%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00010000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
}
if(modestate == 3){
if(digitalRead(A1)==LOW){
day++;
Serial.print("minset = ");
Serial.println(minset);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
if(digitalRead(A2)==LOW){
day--;
Serial.print("hourset = ");
Serial.println(hour);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
digitalWrite(seven_latch, LOW);
lightNumber(day/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b10000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(day%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b01000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
}
if(modestate == 4){
if(digitalRead(A1)==LOW){
month++;
Serial.print("minset = ");
Serial.println(minset);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
if(digitalRead(A2)==LOW){
month--;
Serial.print("hourset = ");
Serial.println(hour);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, 23); }
digitalWrite(seven_latch, LOW);
lightNumber(month/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00100000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(month%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00010000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
}
if(modestate == 5){
if(digitalRead(A1)==LOW){
year++;
Serial.print("minset = ");
Serial.println(minset);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, year); }
if(digitalRead(A2)==LOW){
year--;
Serial.print("hourset = ");
Serial.println(hour);
delay(100);
rtc.set(hour, minute, sec, 5, day, month, year); }
digitalWrite(seven_latch, LOW);
digitalWrite(seven_latch, LOW);
lightNumber(year/10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000010);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
digitalWrite(seven_latch, LOW);
lightNumber(year%10);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000001);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
delay(2);
digitalWrite(seven_latch, LOW);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
shiftOut(seven_datapin,seven_clk,LSBFIRST,0b00000000);
digitalWrite(seven_latch, HIGH);
}
delay(200);
}
}
void lightNumber(int numberTodisplay){
switch(numberTodisplay){
case 0:
digitalWrite(segA,LOW);
digitalWrite(segB,LOW);
digitalWrite(segC,LOW);
digitalWrite(segD,LOW);
digitalWrite(segE,LOW);
digitalWrite(segF,LOW);
digitalWrite(segG,HIGH);
break;
case 1:
digitalWrite(segA,HIGH);
digitalWrite(segB,LOW);
digitalWrite(segC,LOW);
digitalWrite(segD,HIGH);
digitalWrite(segE,HIGH);
digitalWrite(segF,HIGH);
digitalWrite(segG,HIGH);
break;
case 2:
digitalWrite(segA,LOW);
digitalWrite(segB,LOW);
digitalWrite(segC,HIGH);
digitalWrite(segD,LOW);
digitalWrite(segE,LOW);
digitalWrite(segF,HIGH);
digitalWrite(segG,LOW);
break;
case 3:
digitalWrite(segA,LOW);
digitalWrite(segB,LOW);
digitalWrite(segC,LOW);
digitalWrite(segD,LOW);
digitalWrite(segE,HIGH);
digitalWrite(segF,HIGH);
digitalWrite(segG,LOW);
break;
case 4:
digitalWrite(segA,HIGH);
digitalWrite(segB,LOW);
digitalWrite(segC,LOW);
digitalWrite(segD,HIGH);
digitalWrite(segE,HIGH);
digitalWrite(segF,LOW);
digitalWrite(segG,LOW);
break;
case 5:
digitalWrite(segA,LOW);
digitalWrite(segB,HIGH);
digitalWrite(segC,LOW);
digitalWrite(segD,LOW);
digitalWrite(segE,HIGH);
digitalWrite(segF,LOW);
digitalWrite(segG,LOW);
break;
case 6:
digitalWrite(segA,LOW);
digitalWrite(segB,HIGH);
digitalWrite(segC,LOW);
digitalWrite(segD,LOW);
digitalWrite(segE,LOW);
digitalWrite(segF,LOW);
digitalWrite(segG,LOW);
break;
case 7:
digitalWrite(segA,LOW);
digitalWrite(segB,LOW);
digitalWrite(segC,LOW);
digitalWrite(segD,HIGH);
digitalWrite(segE,HIGH);
digitalWrite(segF,HIGH);
digitalWrite(segG,HIGH);
break;
case 8:
digitalWrite(segA,LOW);
digitalWrite(segB,LOW);
digitalWrite(segC,LOW);
digitalWrite(segD,LOW);
digitalWrite(segE,LOW);
digitalWrite(segF,LOW);
digitalWrite(segG,LOW);
break;
case 9:
digitalWrite(segA,LOW);
digitalWrite(segB,LOW);
digitalWrite(segC,LOW);
digitalWrite(segD,LOW);
digitalWrite(segE,HIGH);
digitalWrite(segF,LOW);
digitalWrite(segG,LOW);
break;
}}
void setblink(bool value) {
digitalWrite(blink, value ? LOW : HIGH);
}
void setTime(int m){
switch(m){
case 1 :
if(value++ >= maxValue)
{
/* The Arduino executes this code approx. once every second
* (assuming clock speed = 16MHz)
*/
if(digitalRead(A1) == LOW){
hour = hour+1;
Serial.print("hour = ");
Serial.println(hour);
// Don't forget to reset the counter
value = 0UL;
}
}
break;
}
}