const int segmentPins[8] = {2, 3, 4, 5, 6, 7, 8, 9};
const int digitPins[4] = {10, 11, 12, 13};
const byte digitPatterns[10][8] = {
{1, 1, 1, 1, 1, 1, 0, 0}, // 0
{0, 1, 1, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1, 0}, // 2
{1, 1, 1, 1, 0, 0, 1, 0}, // 3
{0, 1, 1, 0, 0, 1, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1, 0}, // 5
{1, 0, 1, 1, 1, 1, 1, 0}, // 6
{1, 1, 1, 0, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 0}, // 8
{1, 1, 1, 1, 0, 1, 1, 0} // 9
};
int counter = 0;
unsigned long previousMillis = 0;
const long interval = 1000;
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
digitalWrite(segmentPins[i], LOW);
}
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], HIGH);
}
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
counter++;
if (counter > 9999) counter = 0;
}
displayNumber(counter);
}
void displayNumber(int num) {
int digits[4];
digits[0] = num / 1000;
digits[1] = (num / 100) % 10;
digits[2] = (num / 10) % 10;
digits[3] = num % 10;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
digitalWrite(digitPins[j], HIGH);
}
for (int seg = 0; seg < 8; seg++) {
digitalWrite(segmentPins[seg], digitPatterns[digits[i]][seg]);
}
digitalWrite(digitPins[i], LOW);
delay(5);
}
}