int anode[4]={6,8,9,12};
int cath[7]={11,7,4,2,13,10,5};
unsigned short time=0;

void setup(){
    for(short i=2;i<=13;i++)
        pinMode(i,OUTPUT);
}

short count(short n){
    short count=0;
    while(n!=0){
        n/=10;
        count+=1;  
    }
    return count;
}
void reset(){
    for(short i=0;i<=6;i++){
        digitalWrite(*(cath+i),HIGH);
    }
}
void display(int n) {
  reset();
  if(n==1||n==7){
    digitalWrite(7,LOW);
    digitalWrite(4,LOW);
    if(n==7){digitalWrite(11,LOW);}
  }
  for(short i=0;i<=6;i++){
    if(n==1||n==7){break;}
    if(n==0&& *(cath+i)==5){continue;}
    if(n==2&&(*(cath+i)==4||*(cath+i)==10)){continue;}
    if(n==3&&(*(cath+i)==13||*(cath+i)==10)){continue;}
    if(n==4&&(*(cath+i)==11||*(cath+i)==2||*(cath+i)==13)){continue;}
    if(n==5&&(*(cath+i)==13||*(cath+i)==7)){continue;}
    if(n==6 && *(cath+i)==7){continue;}
    if(n==9 && *(cath+i)==13){continue;}
    digitalWrite(*(cath+i),LOW);
    }
}

void loop(){
  short val=9999;
  while(val!=0){
      short dup=val;
      short sum=count(dup);
      for(short i=0;i<=sum;i++){
      short temp=dup%10;
      dup/=10;
      display(temp);
      digitalWrite(anode[i],HIGH);
      delay(25);
      digitalWrite(anode[i],LOW);
   }
   if((millis()-time)>=1000){
    val--;
    time=millis();
   }
 }
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
sevseg1:A
sevseg1:B
sevseg1:C
sevseg1:D
sevseg1:E
sevseg1:F
sevseg1:G
sevseg1:DP
sevseg1:DIG1
sevseg1:DIG2
sevseg1:DIG3
sevseg1:DIG4
sevseg1:COM
sevseg1:CLN