const byte L[]={2,3,4,5,6,7,8,9};
const byte D[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
const byte S1 = 10;
#define S2 11
#define S3 12
#define S4 13
#define R A3
#define DN A4
#define UP A5
int v = 9;
unsigned long t=0;
void s(int n)
{
if(n<0 || n>9)return;
byte p=D[n];
for(int i=0;i<8;i++)
digitalWrite(L[i],bitRead(p,i));
}
void d(long n){
byte a[4]={n/1000%10,n/100%10,n/10%10,n%10};
int p[4]={S4,S3,S2,S1};
for(int i=0;i<4;i++){s(a[i]);digitalWrite(p[i],1);delay(2);digitalWrite(p[i],0);}
}
void setup(){
#define Ra A5
for(int i=0;i<8;i++)pinMode(L[i],1);
pinMode(S1,1);pinMode(S2,1);pinMode(S3,1);pinMode(S4,1);
pinMode(R,2);pinMode(DN,2);pinMode(UP,2);
for(int i=0;i<50;i++)d(v);
}
void loop(){
d(v);
if(millis()-t>200){
if(!digitalRead(R))v=9;
else if(!digitalRead(UP)&&v<9999)v++;
else if(!digitalRead(DN)&&v>0)v--;
t=millis();
}
}