// Define pins for segments and digits
int segment_pins[7] = {33, 14, 13, 22, 23, 25, 12};
int digit_pins[3] = {32, 26, 27};
// Define segment values for digits 0 to 9
int segments[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
void setup() {
// Set pin modes
for (int i = 0; i < 7; i++) {
pinMode(segment_pins[i], OUTPUT);
}
for (int i = 0; i < 3; i++) {
pinMode(digit_pins[i], OUTPUT);
}
}
void loop() {
int counter = 0;
while (counter < 1000) { // Count up to 999
int digit1 = counter / 100;
int digit2 = (counter / 10) % 10;
int digit3 = counter % 10;
for (int loopCount = 0; loopCount < 66; loopCount++) { // 66 because every digit takes 5 so 3x5x66 = 990 + 10 to make it 1 second counter
// Display first digit
for (int i = 0; i < 7; i++) {
digitalWrite(segment_pins[i], segments[digit1][i]);
}
digitalWrite(digit_pins[0], HIGH);
delay(5);
digitalWrite(digit_pins[0], LOW);
// Display second digit
for (int i = 0; i < 7; i++) {
digitalWrite(segment_pins[i], segments[digit2][i]);
}
digitalWrite(digit_pins[1], HIGH);
delay(5);
digitalWrite(digit_pins[1], LOW);
// Display third digit
for (int i = 0; i < 7; i++) {
digitalWrite(segment_pins[i], segments[digit3][i]);
}
digitalWrite(digit_pins[2], HIGH);
delay(5);
digitalWrite(digit_pins[2], LOW);
}
counter++; // Increment the counter variable
delay(10);
}
}