// ----------------------------------------------------------------------------------------------- Digital Clock ------------------------------------------------------------------------------
char secLsd = 0; // Global variable holds seconds least significent digit
char secMsd = 0; // Global variable holds seconds most significent digit
char minLsd = 0;
char minMsd = 0;
char hrsLsd = 0;
char hrsMsd = 0;
const int AA2 = 5; //---------------------------------------------------------------------- define i/o pins -----------------------------------------------------------
const int AA1 = 4;
const int AA0 = 3;
const int E3 = 2;
const int D3 = 11;
const int D2 = 10;
const int D1 = 9;
const int D0 = 8;
#define SW1 13
#define SW2 7
#define SW3 12
int Time=0;
int dog=0;
void setup() {
Serial.begin(9600);
pinMode(AA2, OUTPUT);
pinMode(AA1, OUTPUT);
pinMode(AA0, OUTPUT);
pinMode(E3, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D0, OUTPUT);
digitalWrite(E3,LOW);
writeDigit(5,5); //----------------------------------- write 5,4,3,2,1,0 to the displays for one second ----------------------------------------------
writeDigit(4,4);
writeDigit(3,3);
writeDigit(2,2);
writeDigit(1,1);
writeDigit(0,0);
}
void loop() {
controlTime();
dispTime();
delay(100);// ------------------- Uses the delay() function method to set one second time interval -----------------------------
countTime();
delay(1000);
}
void writeDigit(int address, int value) { //--------------- function to put address and data values on pins, then pulse E3 to write data into selected display --------
digitalWrite(AA2,bitRead(address,2));
digitalWrite(AA1,bitRead(address,1));
digitalWrite(AA0,bitRead(address,0));
digitalWrite(D3,bitRead(value,3));
digitalWrite(D2,bitRead(value,2));
digitalWrite(D1,bitRead(value,1));
digitalWrite(D0,bitRead(value,0));
digitalWrite(E3,HIGH);
delay(1);
digitalWrite(E3,LOW);
}
void dispTime() { //------------------------------------ function to write seconds, minutes, hours to display -----------------------------------------------
writeDigit(0,secLsd);
writeDigit(1,secMsd);
writeDigit(2,minLsd);
writeDigit(3,minMsd);
writeDigit(4,hrsLsd);
writeDigit(5,hrsMsd);
}
void controlTime() {
Time++;
if(digitalRead(SW1)==HIGH){//Switch is active HIGH
int seconds = Time%60;
secMsd = seconds/10;
}
else if(digitalRead(SW2)==HIGH){//Switch is active HIGH
//int minutes = (Time/60)%60;
// minLsd = minutes%10;
// minMsd=minutes/10;
int minutes = Time%60;
minMsd = minutes/10;
}
else if (digitalRead(SW3)==HIGH){
dog++;
int hours = Time%100;
hrsLsd =dog;
//Serial.println(hours);
if(dog>=10){
//Serial.println(hours);
hrsMsd+=1;
dog=0;
hrsLsd =dog;
//hrsMsd = hours/10;
}
if(hrsMsd>1){
if(dog>=4){
hrsMsd=0;
dog=0;
hrsLsd =dog;
}
}
Serial.println(dog);
}
}
void countTime() {
Time++;
int seconds = Time%60;
secLsd = seconds%10;
secMsd = seconds/10;
int minutes = (Time/60)%60;
minLsd = minutes%10;
minMsd=minutes/10;
int hours = ((Time/60)/60)%24;
hrsLsd = hours%10;
hrsMsd = hours/10;
So thanks to you guys I decided to include a code to set the time but I can't seem to know how to display the time set.Any tips?