// Define pins for the segments
int segmentPins[] = {6, 7, 8, 9, 10, 11, 12};
// Define pins for the common cathodes/anodes
int digitPins[] = {2, 3, 4, 5};
void setup() {
// Set up segment pins as outputs using a loop
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
// Set up digit pins as outputs using a loop
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void loop() {
// Loop through each digit pin to display the numbers
for (int digit = 0; digit < 4; digit++) {
// Activate the current digit pin
digitalWrite(digitPins[digit], HIGH);
// Display numbers 0 to 9
for (int i = 0; i < 10; i++) {
displayNumber(i);
delay(500);
}
// Deactivate the current digit pin
digitalWrite(digitPins[digit], LOW);
}
}
// Function to display a digit on the seven-segment display
void displayNumber(int number) {
switch (number) {
case 0:
displaySegment(0,0,0,0,0,0,1); // Display 0
break;
case 1:
displaySegment(1,0,0,1,1,1,1);// Display 1
break;
case 2:
displaySegment(0,0,1,0,0,1,0); // Display 2
break;
case 3:
displaySegment(0,0,0,0,1,1,0); // Display 3
break;
case 4:
displaySegment(1,0,0,1,1,0,0); // Display 4
break;
case 5:
displaySegment(0,1,0,0,1,0,0); // Display 5
break;
case 6:
displaySegment(0,1,0,0,0,0,0); // Display 6
break;
case 7:
displaySegment(0,0,0,1,1,1,1); // Display 7
break;
case 8:
displaySegment(0,0,0,0,0,0,0); // Display 8
break;
case 9:
displaySegment(0,0,0,0,1,0,0); // Display 9
break;
}
}
// Function to set segment pins based on the digit to be displayed
void displaySegment(int a, int b, int c, int d, int e, int f, int g) {
digitalWrite(segmentPins[0], a); // logic for common anode display
digitalWrite(segmentPins[1], b); // logic for common anode display
digitalWrite(segmentPins[2], c); // logic for common anode display
digitalWrite(segmentPins[3], d); // logic for common anode display
digitalWrite(segmentPins[4], e); // logic for common anode display
digitalWrite(segmentPins[5], f); // logic for common anode display
digitalWrite(segmentPins[6], g); // logic for common anode display
}