// PRACTICA DISPLAY 0-9999 //
byte Led[] = {23, 22, 21, 19, 18, 5, 17};
byte Bar[] = {16, 4, 2, 15};
unsigned long intervalo = 150, ValorAnterior = 0;
int cuenta = 0;
byte Dig[4] = {0, 0, 0, 0};
byte seg[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
void setup() {
for (byte i = 0; i < 7; i++) {
pinMode(Led[i], OUTPUT);
}
for (byte i = 0; i < 4; i++) {
pinMode(Bar[i], OUTPUT);
digitalWrite(Bar[i], HIGH);
}
for (byte i = 0; i < 4; i++) {
Dig[i] = 0;
}
}
void loop() {
if (millis() - ValorAnterior >= intervalo) {
ValorAnterior = millis();
cuenta++;
if (cuenta >= 10000) cuenta = 0;
Dig[3]= cuenta/1000;
Dig[2]=(cuenta-(Dig[3]*1000))/100;
Dig[1]=(cuenta-(Dig[3]*1000)-(Dig[2]*100))/10;
Dig[0]= cuenta-(Dig [3]*1000)-(Dig[2]*100)-(Dig[1]*10);
}
for (byte i = 0; i < 4; i++) {
barrido(i);
Display(seg[Dig[i]]);
delay(5);
Display(0x00);
}
}
void barrido(byte digito) {
for (byte i = 0; i < 4; i++) {
digitalWrite(Bar[i], HIGH);
}
digitalWrite(Bar[digito], LOW);
}
void Display(byte pattern) {
for (byte i = 0; i < 7; i++) {
digitalWrite(Led[i], (pattern & (1 << i)) ? HIGH : LOW);
}
}