Contador del 1 al 9 con display de 7 segmentos en Arduino sin BCD

Para crear un contador es necesario utilizar un decodificador BCD para poder visualizar los números que se escriben en binario en la programación, en el display de siete segmentos. Pero en algunos casos, cuando se requiere hacer el contador y por alguna razón no se cuenta con un 7447 o algo parecido, podemos hacerlo de otra manera.

Haciendo que se prendan determinados segmentos del display podemos hacer que se vean los números, y así crear el contador. Con el decodificador lo más viable es utilizar un ciclo for para que el número empiece en cero y vaya incrementándose hasta llegar a 9. En este caso no usaremos ciclos, ya que el código no hará que se muestren números, sino que se enciendan los segmentos del display.

Obviamente el código quedará mucho más largo, algo como lo siguiente:

int pin6 = 6; 
 int pin7 = 7;
 int pin8 = 8;
 int pin9 = 9;
 int pin10 = 10;
 int pin11 = 11;
 int pin12 = 12;
 int timer = 300; 
void setup(){ 
 pinMode(pin7, OUTPUT); 
 pinMode(pin8, OUTPUT);
 pinMode(pin9, OUTPUT);
 pinMode(pin10, OUTPUT);
 pinMode(pin11, OUTPUT);
 pinMode(pin12, OUTPUT);
 pinMode(pin6, OUTPUT);
}
void loop() { 
 digitalWrite(pin7, HIGH); 
 digitalWrite(pin8, HIGH); 
 delay(timer); 
 digitalWrite(pin7, LOW); 
 digitalWrite(pin8, LOW); 
 delay(timer);
 digitalWrite(pin6, HIGH); 
 digitalWrite(pin7, HIGH); 
 digitalWrite(pin12, HIGH); 
 digitalWrite(pin10, HIGH); 
 digitalWrite(pin9, HIGH); 
 delay(timer); 
 digitalWrite(pin6, LOW); 
 digitalWrite(pin7, LOW); 
 digitalWrite(pin12, LOW); 
 digitalWrite(pin10, LOW); 
 digitalWrite(pin9, LOW); 
 delay(timer);
 digitalWrite(pin6, HIGH); 
 digitalWrite(pin7, HIGH); 
 digitalWrite(pin12, HIGH);
 digitalWrite(pin8, HIGH); 
 digitalWrite(pin9, HIGH); 
 delay(timer); 
 digitalWrite(pin6, LOW); 
 digitalWrite(pin7, LOW); 
 digitalWrite(pin12, LOW); 
 digitalWrite(pin8, LOW); 
 digitalWrite(pin9, LOW); 
 delay(timer);
 digitalWrite(pin11, HIGH); 
 digitalWrite(pin12, HIGH); 
 digitalWrite(pin7, HIGH); 
 digitalWrite(pin8, HIGH); 
 delay(timer); 
 digitalWrite(pin11, LOW); 
 digitalWrite(pin12, LOW); 
 digitalWrite(pin7, LOW); 
 digitalWrite(pin8, LOW); 
 delay(timer);
 digitalWrite(pin6, HIGH); 
 digitalWrite(pin11, HIGH); 
 digitalWrite(pin12, HIGH); 
 digitalWrite(pin8, HIGH); 
 digitalWrite(pin9, HIGH); 
 delay(timer); 
 digitalWrite(pin6, LOW); 
 digitalWrite(pin11, LOW); 
 digitalWrite(pin12, LOW); 
 digitalWrite(pin8, LOW); 
 digitalWrite(pin9, LOW); 
 delay(timer);
 digitalWrite(pin6, HIGH); 
 digitalWrite(pin11, HIGH); 
 digitalWrite(pin10, HIGH); 
 digitalWrite(pin9, HIGH); 
 digitalWrite(pin8, HIGH); 
 digitalWrite(pin12, HIGH); 
 delay(timer); 
 digitalWrite(pin6, LOW); 
 digitalWrite(pin11, LOW); 
 digitalWrite(pin10, LOW); 
 digitalWrite(pin9, LOW); 
 digitalWrite(pin8, LOW); 
 digitalWrite(pin12, LOW); 
 delay(timer);
 digitalWrite(pin6, HIGH); 
 digitalWrite(pin7, HIGH); 
 digitalWrite(pin8, HIGH); 
 delay(timer); 
 digitalWrite(pin6, LOW); 
 digitalWrite(pin7, LOW); 
 digitalWrite(pin8, LOW); 
 delay(timer);
 digitalWrite(pin6, HIGH); 
 digitalWrite(pin7, HIGH); 
 digitalWrite(pin8, HIGH); 
 digitalWrite(pin9, HIGH);
 digitalWrite(pin10, HIGH);
 digitalWrite(pin11, HIGH);
 digitalWrite(pin12, HIGH);
 delay(timer); 
 digitalWrite(pin6, LOW); 
 digitalWrite(pin7, LOW); 
 digitalWrite(pin8, LOW); 
 digitalWrite(pin9, LOW);
 digitalWrite(pin10, LOW);
 digitalWrite(pin11, LOW);
 digitalWrite(pin12, LOW);
 delay(timer);
 digitalWrite(pin6, HIGH); 
 digitalWrite(pin11, HIGH); 
 digitalWrite(pin12, HIGH); 
 digitalWrite(pin7, HIGH);
 digitalWrite(pin8, HIGH);
 delay(timer); 
 digitalWrite(pin6, LOW); 
 digitalWrite(pin11, LOW); 
 digitalWrite(pin12, LOW); 
 digitalWrite(pin7, LOW);
 digitalWrite(pin8, LOW);
 delay(timer);
}

Aquí declaramos 7 variables, que corresponden a cada segmento, luego, con un bucle hacemos que se repita todo (encender los segmentos que simulen números del 1 al 9), utilizando un contador de 300 mili segundos.

Aquí puedes ver un video del programa funcionando.


Gracias por apoyar el libre conocimiento con tu donación!
Bitcoin: bc1q4sw9260twfcxatj8mjp7358cyvrf8whzlelyhj
Ethereum: 0xFb93D2a3c9d1A0b83EE629c2dE1725BCa192e581
Litecoin: LbFduJmHvQXcpCnwfUT7aJ4DYoWSL3iQw8
Dogecoin: D7QQVqNR5rk215A4zd2gyzV9P2bLQtZHFV
Transferencia bancaria en México:
Cuenta CLABE: 646180192143715428 Nombre: Masterhacks LATAM Banco: STP

Deja una respuesta

Tu dirección de correo electrónico no será publicada.