//defining the Anode pins for the 7 segment display const int anode1=34; const int anode2=35; const int anode3=36; const int anode4=37; //defining the Cathode pins for the 7 segment display const int A=30;//Section 'A' of the digit, pin 11 on 7seg const int B=2;//Section 'B' of the digit, pin 7 on 7seg const int C=4;//Section 'C' of the digit, pin 4 on 7seg const int D=6;//Section 'D' of the digit, pin 2 on 7seg const int E=7;//Section 'E' of the digit, pin 1 on 7seg const int F=29;//Section 'F' of the digit, pin 10 on 7seg const int G=3;//Section 'G' of the digit, pin 5 on 7seg const int DP=5;//Decimal point of the digit, pin 3 on 7seg //defining various buttons, LEDs, and states int timeButton=9; int hourButton=10; int min10Button=11; int min1Button=12; int alarmTimeButton=13; int alarmSetButton=41; int timeLED=32; int alarmLED=33; boolean timeButtonState=0; boolean alarmTimeButtonState=0; boolean alarmSetState=0; boolean pm=0; boolean alarmPM=0; int buzzerPin=39; //defining the time values int hour1=1; int hour2=2; int min1=0; int min2=0; int segment=1; int tick=0; int tickValue=125; int tickDelay=2; int alarmHour1=1; int alarmHour2=2; int alarmMin1=0; int alarmMin2=0; int alarmSegment=1; void setup() { //Setting up the pins pinMode(anode1, OUTPUT); pinMode(anode2, OUTPUT); pinMode(anode3, OUTPUT); pinMode(anode4, OUTPUT); pinMode(A,OUTPUT); pinMode(B,OUTPUT); pinMode(C,OUTPUT); pinMode(D,OUTPUT); pinMode(E,OUTPUT); pinMode(F,OUTPUT); pinMode(G,OUTPUT); pinMode(DP,OUTPUT); pinMode(timeButton, INPUT); pinMode(alarmTimeButton, INPUT); pinMode(timeLED, OUTPUT); digitalWrite(timeLED, LOW); pinMode(alarmLED, OUTPUT); digitalWrite(alarmLED, LOW); }//end of setup() void loop(){ //updating display with the current time segment=1; if(hour1==1){ decodeAndWrite(hour1, segment); } else if(pm==0){ decodeAndWrite('A', segment); } else{ decodeAndWrite('P', segment); } delay(tickDelay); segment=2; decodeAndWrite(hour2, segment); delay(tickDelay); segment=3; decodeAndWrite(min1, segment); delay(tickDelay); if(alarmSetState==1){ segment=5; decodeAndWrite(min2, segment); delay(tickDelay); } else{ segment=4; decodeAndWrite(min2, segment); delay(tickDelay); } //end of updating display with current time //updating individual number values based on how much time has passed tick++; if(tick==tickValue){ min2++; tick=0; } if(min2==10){ min1++; min2=0; } if(min1==6){ hour2++; min1=0; } if(hour2==10){ hour1++; hour2=0; } if(hour1==1 && hour2==3){ digitalWrite(anode1, LOW); hour1=0; hour2=1; } if(hour1==1 && hour2==2 && min1==0 && min2==0){ pm=!pm; } //end of updating individual number values //setting the time if(digitalRead(timeButton)==HIGH){ timeButtonState=!timeButtonState; digitalWrite(timeLED, timeButtonState); while(digitalRead(timeButton)==HIGH){ segment=1; if(hour1==1){ decodeAndWrite(hour1, segment); } else if(pm==0){ decodeAndWrite('A', segment); } else{ decodeAndWrite('P', segment); } delay(tickDelay); segment=2; decodeAndWrite(hour2, segment); delay(tickDelay); segment=3; decodeAndWrite(min1, segment); delay(tickDelay); segment=4; decodeAndWrite(min2, segment); delay(tickDelay); }//end of displaying time while the timeButton is held timeSet();//go into actual time setting function }//end of setting the time //setting the alarm time if(digitalRead(alarmTimeButton)==HIGH){ alarmTimeButtonState=!alarmTimeButtonState; digitalWrite(alarmLED, alarmTimeButtonState); while(digitalRead(alarmTimeButton)==HIGH){ alarmSegment=1; if(alarmHour1==1){ decodeAndWrite(alarmHour1, alarmSegment); } else if(pm==0){ decodeAndWrite('A', segment); } else{ decodeAndWrite('P', segment); } delay(tickDelay); alarmSegment=2; decodeAndWrite(alarmHour2, alarmSegment); delay(tickDelay); alarmSegment=3; decodeAndWrite(alarmMin1, alarmSegment); delay(tickDelay); alarmSegment=4; decodeAndWrite(alarmMin2, alarmSegment); delay(tickDelay); tick++; }//end of keeping track of time while button is held alarmTimeSet();//go into actual alarm time setting function }//end of setting the alarm time //turning the alarm on/off if(digitalRead(alarmSetButton)==HIGH){ alarmSetState=!alarmSetState; while(digitalRead(alarmSetButton)==HIGH){ segment=1; if(hour1==1){ decodeAndWrite(hour1, segment); } else if(pm==0){ decodeAndWrite('A', segment); } else{ decodeAndWrite('P', segment); } delay(tickDelay); segment=2; decodeAndWrite(hour2, segment); delay(tickDelay); segment=3; decodeAndWrite(min1, segment); delay(tickDelay); if(alarmSetState==1){ segment=5; decodeAndWrite(min2, segment); delay(tickDelay); } else{ segment=4; decodeAndWrite(min2, segment); delay(tickDelay); } tick++; } int totalTickCycles = tick/tickValue; for(int i=0; i