byte led[]={23,22,21,19,18,5,17};
int contminutos=0;
int conthoras=0;
unsigned long intervalo=500;
unsigned long valoranterior=0;
byte seg[]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x73};
int dig[]={0,0,0,0};
byte bar[]={16,4,2,15};
void setup() {
for (byte i = 0; i <= 6; i++) {
pinMode(led[i], OUTPUT);
}
for (byte i = 0; i <= 3; i++) {
pinMode(bar[i], OUTPUT);
}
}
void display(byte n){
byte j, m=6;
for(byte i=0; i<=6; i++){
j=pow(2,m);
digitalWrite(led[i],(n&j));
m--;
}
}
void barr(byte a, byte b, byte c, byte d){
digitalWrite(bar[3], a);
digitalWrite(bar[2], b);
digitalWrite(bar[1], c);
digitalWrite(bar[0], d);
}
void barrido(byte b){
switch(b){
case 0:
barr(0,0,0,1);
break;
case 1:
barr(0,0,1,0);
break;
case 2:
barr(0,1,0,0);
break;
case 3:
barr(1,0,0,0);
break;
}
}
void loop() {
if(millis()-valoranterior>=intervalo)
{
valoranterior+=intervalo;
dig[3]=conthoras/10;
dig[2]=conthoras-(dig[3]*10);
dig[1]=contminutos/10;
dig[0]=contminutos-(dig[3]*10);
conthoras++;
contminutos++;
if(conthoras>=25) conthoras=0;
if(contminutos>=61) contminutos=0;
}
barrido(0);
display(seg[dig[3]]);
delay(5);
barrido(1);
display(seg[dig[2]]);
delay(5);
barrido(2);
display(seg[dig[1]]);
delay(5);
barrido(3);
display(seg[dig[0]]);
delay(5);
}