I'm trying to do a clock using 4x7 segment displays but once I run the code the Display doesn't turn on
here's my Code that I'm like 90% sure that there's nothing wrong with it
bool A = 2;
bool B = 3;
bool C = 4;
bool D = 5;
bool E = 6;
bool F = 7;
bool G = 8;
int PWR1 = 10;
int PWR2 = 11;
int PWR3 = 12;
int PWR4 = 13;
int TimeSec = 0;
int TimeMin1 = 0;
int TimeMin2 = 0;
int TimeHour1 = 8;
int TimeHour2 = 0;
int Display = 0;
int Loop = 0;
int Digit = 0;
int Memory1 = 0;
int Memory2 = 0;
int Memory3 = 0;
int Memory4 = 0;
int Rewrite1 = 0;
int Rewrite2 = 0;
int Rewrite3 = 0;
int Rewrite4 = 0;
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(PWR1, OUTPUT);
pinMode(PWR2, OUTPUT);
pinMode(PWR3, OUTPUT);
pinMode(PWR4, OUTPUT);
}
void loop() {
loop:
delay(250);
Digit = Digit + 1;
if (Digit > 4) { Digit = 1; }
if (Digit == 1) { goto digit1; }
if (Digit == 2) { goto digit2; }
if (Digit == 3) { goto digit3; }
if (Digit == 4) { goto digit4; }
// Supposedly turns on the 7-segment display that is next in line to have its digit edited but doesn't work?
digit1:
digitalWrite(PWR1, HIGH);
digitalWrite(PWR2, LOW);
digitalWrite(PWR3, LOW);
digitalWrite(PWR4, LOW);
Display = Memory1;
goto skip;
digit2:
digitalWrite(PWR2, HIGH);
digitalWrite(PWR1, LOW);
digitalWrite(PWR3, LOW);
digitalWrite(PWR4, LOW);
Display = Memory2;
goto skip;
digit3:
digitalWrite(PWR3, HIGH);
digitalWrite(PWR1, LOW);
digitalWrite(PWR2, LOW);
digitalWrite(PWR4, LOW);
Display = Memory3;
goto skip;
digit4:
digitalWrite(PWR4, HIGH);
digitalWrite(PWR1, LOW);
digitalWrite(PWR2, LOW);
digitalWrite(PWR3, LOW);
Display = Memory4;
skip:
// Manual Turning on of LEDs is overcomplicated and can be made much shorter yes I know :(
if (Display == 1) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
if (Display == 2) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(G, LOW);
digitalWrite(E, LOW);
digitalWrite(D, LOW);
}
if (Display == 3) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(G, LOW);
digitalWrite(D, LOW);
}
if (Display == 4) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
digitalWrite(G, LOW);
digitalWrite(F, LOW);
digitalWrite(C, LOW);
}
if (Display == 5) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
}
if (Display == 6) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
}
if (Display == 7) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
if (Display == 8) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
digitalWrite(E, LOW);
}
if (Display == 9) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
if (Display == 0) {
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
}
// Checks how many times it has looped over
Loop = Loop + 1;
if (Loop < 4) {goto loop;}
else
{
// Resets Loop count and counts 1 second (normally it has a delay(1000) but the delay(250) on the loop to account for LED's turning on is counting for me )
Loop = 0;
TimeSec = (TimeSec + 1);
if (TimeSec == 60) {
TimeMin1 = (TimeMin1 + 1);
Memory1 = TimeMin1;
TimeSec = 0;
if (TimeMin1 == 10) {
TimeMin2 = (TimeMin2 + 1);
Memory2 = TimeMin2;
TimeMin1 = 0;
Memory1 = TimeMin1;
if (TimeMin2 == 7) {
TimeHour1 = (TimeHour1 + 1);
Memory3 = TimeHour1;
TimeMin2 = 0;
Memory2 = TimeMin2;
if (TimeHour1 == 10) {
TimeHour2 = 1;
Memory4 = TimeHour2;
TimeHour1 = 0;
Memory3 = TimeHour1;
if (TimeHour1 == 3 && TimeHour2 == 1) {
TimeHour2 = 0;
Memory4 = TimeHour2;
TimeHour1 = 1;
Memory3 = TimeHour1;
}
}
}
}
}
}
}
Also I think that I have to make a clock of my own for the Timer or else it will become a problem later on but I don't know how to make 2 loops so if someone can tell me how to do it (preferably in a way that I can understand xD) I'd be very grateful
Notes:
- The Displays are Common Anode so to turn on a LED I used
digitalWrite(ledpin, LOW)
for a negative output - I'm not using a 4 digit 7-segment display -- I'm using 4 individual 7-segment displays
- Resistors are 220 Ohm
- The Picture was made using https://circuits.io
- I'm still new at this so my code may have some newb mistakes or just stuff that was made overcomplicatedly simple if you know what I mean :P
UPDATE 1:
I fixed it now the problem was I was setting the variables to bool instead of integer but I still can't figure out how to do a self-sufficient clock because the current code now runs but doesn't turn on as fast as I need to