const unsigned int scan[] = {5, 6, 7, 8}; #define DATA 10 #define LATCH 11 #define CLK 12 byte numbers[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 }; void setup() { for (int i = 0; i < 4; i++) { pinMode(scan[i], OUTPUT); digitalWrite(scan[i], HIGH); } pinMode(DATA, OUTPUT); pinMode(LATCH, OUTPUT); pinMode(CLK, OUTPUT); } void setDigits(int number, int digits[4]) { for (int i = 0; i < 4; i++) { digits[i] = number % 10; number /= 10; } } void loop() { static int number = 0; static unsigned long checkpoint = 0; static int digits[4]; for (int i = 0; i < 4; i++) { digitalWrite(LATCH, LOW); shiftOut(DATA, CLK, MSBFIRST, numbers[digits[i]]); digitalWrite(LATCH, HIGH); digitalWrite(scan[i], LOW); delay(1); digitalWrite(scan[i], HIGH); } if (millis() - checkpoint > 200) { number++; setDigits(number, digits); checkpoint = millis(); } }