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