I am building minutes and seconds countdown using only arduino uno and 4 dig 7 seg display without using any shift registers or other ICs. I have made a code that counts down fourth digit every second from 9 to 0. However I have no idea how to modify the code that it would count down 60 second and 60 minutes without making the sketch 4956 pages long. I tried to modify it already but I don`t know how to get rid of delay() function that causes problems. Thank you for your time and sory for bad english.
int A = 6;
int B = 7;
int C = 8; //segments on IO pins
int D = 9;
int E = 10;
int F = 11;
int G = 12;
void one()
{
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH); // creating all numbers needed
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void two()
{
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
}
void three()
{
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void four()
{
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void five()
{
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
}
void six()
{
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
}
void seven()
{
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void eight()
{
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void nine()
{
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void zero()
{
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void seconds_countdown()
{
nine();
delay(1000);
eight();
delay(1000); // countdown with problematic delays
seven();
delay(1000);
six();
delay(1000);
five();
delay(1000);
four();
delay(1000);
three();
delay(1000);
two();
delay(1000);
one();
delay(1000);
zero();
delay(1000);
}
void setup()
{
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT); // analog IOs control digits of display
pinMode(A3, OUTPUT);
pinMode(A4, OUTPUT);
}
void loop()
{
digitalWrite(A4, HIGH); // executing the countdown
seconds_countdown();
}