const int segmentos[] = {2, 3, 4, 5, 6, 7, 8, 13}; // A, B, C, D, E, F, G
const int digitos[] = {9, 10, 11, 12}; // Dígito 1, 2, 3, 4
const byte numeros[][8] = {
{0, 0, 0, 0, 0, 0, 1, 1}, // 0
{1, 0, 0, 1, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0, 1}, // 2
{0, 0, 0, 0, 1, 1, 0, 1}, // 3
{1, 0, 0, 1, 1, 0, 0, 1}, // 4
{0, 1, 0, 0, 1, 0, 0, 1}, // 5
{0, 1, 0, 0, 0, 0, 0, 1}, // 6
{0, 0, 0, 1, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0, 1}, // 8
{0, 0, 0, 1, 1, 0, 0, 1} // 9
};
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(segmentos[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(digitos[i], OUTPUT);
}
}
void loop() {
for (int contador = 0; contador <= 9999; contador++) {
int unidades = contador % 10;
int decenas = (contador / 10) % 10;
int centenas = (contador / 100) % 10;
int unidades_de_millar = (contador / 1000) % 10;
display(1, unidades);
delay(5); // Pequeña pausa para evitar el parpadeo
apagarDisplay();
display(2, decenas);
delay(5); // Pequeña pausa para evitar el parpadeo
apagarDisplay();
display(3, centenas);
delay(5); // Pequeña pausa para evitar el parpadeo
apagarDisplay();
display(4, unidades_de_millar);
delay(5); // Pequeña pausa para evitar el parpadeo
apagarDisplay();
delay(10); // Ajusta la velocidad de visualización
}
}
void display(int digito, int numero) {
if (digito >= 1 && digito <= 4 && numero >= 0 && numero <= 9) {
for (int i = 0; i < 8; i++) {
digitalWrite(segmentos[i], numeros[numero][i]);
}
digitalWrite(digitos[4 - digito], LOW);
}
}
void apagarDisplay() {
for (int i = 0; i < 4; i++) {
digitalWrite(digitos[i], HIGH);
}
}