byte cuenta = 0;
unsigned long intervalo = 500, ValorAnterior = 0;
byte Led[] = {23, 22, 21, 19, 18, 5, 17, 16, 4, 2, 15};
byte bar[] = {16, 4, 2, 15};
byte Seg[] = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x73};
int DIG[] = {0, 0, 0, 0};
void setup() {
for (byte i = 0; i < sizeof(Led) / sizeof(Led[0]); i++)
pinMode(Led[i], OUTPUT);
}
void loop() {
if (millis() - ValorAnterior >= intervalo) {
ValorAnterior += intervalo;
DIG[3] = cuenta / 1000;
DIG[2] = (cuenta % 1000) / 100;
DIG[1] = (cuenta % 100) / 10;
DIG[0] = cuenta % 10;
cuenta = (cuenta + 1) % 10000;
}
for (byte i = 0; i < 4; i++) {
barrido(i);
display(Seg[DIG[i]]);
delay(5);
}
}
void display(byte N) {
byte j, m = 7;
for (byte i = 0; i <= 6; i++) {
j = (2, m); // Corrección del pow()
digitalWrite(Led[i], (N & j) ? LOW : HIGH);
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;
}
}