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.