Contador de 0 a 9 con MicroPython
Un contador de 0 a 9 con MicroPython es de gran utilidad para mantener un conteo en diversas situaciones, ya sea para el marcador de puntos en un juego, contar objetos, entre otras.
Este proyecto fue realizado con una Placa Raspberry Pi Pico con el firmware de micropython previamente instalado, para la visualización del conteo se emplea un display de siete segmentos de ánodo común, el cual es capaz de visualizar números desde 0 hasta el 9.
Materiales
- 1x Placa Raspberry Pi Pico, Esp32 o cualquier placa con micropython.
- 1x Display de 7 segmentos de ánodo común.
- 8x Resistor de 330 Ohm.
- 2x Pulsador normalmente abierto.
- 1x Protoboard.
- Cables de conexión.
Circuito
Para el montaje de este circuito se utilizó una placa Raspberry Pi Pico, si utilizas otra placa debes verificar la disponibilidad o modificar los pines utilizados para este diseño.

El display se debe conectar de la siguiente manera:

- El Pin a va conectado al Pin GP7 de la placa.
- El Pin b va conectado al Pin GP6 de la placa.
- El Pin c va conectado al Pin GP9 de la placa.
- El Pin d va conectado al Pin GP10 de la placa.
- El Pin e va conectado al Pin GP11 de la placa.
- El Pin f va conectado al Pin GP12 de la placa.
- El Pin g va conectado al Pin GP13 de la placa.
- El Pin DP va conectado al Pin GP8 de la placa.
El pin de salida del pulsador de incremento va conectado al Pin GP4 de la Placa. El Pin de ingreso va conectado a GND.
El pin de salida del pulsador de decremento va conectado al Pin GP5 de la Placa. El Pin de ingreso va conectado a GND.
Sketch en MicroPython
Para la programación de este sketch se utilizó una placa Raspberry Pi Pico, si utilizas otra placa debes verificar la disponibilidad o modificar los pines utilizados.
from machine import Pin
from time import sleep
#Setup Pin de Entrada (Pulsador)
pin_btn_up = Pin(4, Pin.IN, Pin.PULL_UP)
pin_btn_down = Pin(5, Pin.IN, Pin.PULL_UP)
#Setup Pines de Salida (Display Anado Comun)
pin_a = Pin(7, Pin.OUT)
pin_b = Pin(6, Pin.OUT)
pin_c = Pin(9, Pin.OUT)
pin_d = Pin(10, Pin.OUT)
pin_e = Pin(11, Pin.OUT)
pin_f = Pin(12, Pin.OUT)
pin_g = Pin(13, Pin.OUT)
pin_dp = Pin(8, Pin.OUT)
#Estados logicos de ON/OFF para display de Anodo Comun
H = 0
L = 1
numero = 0
#Funcion para activar cada segmentos del display
def driver(a,b,c,d,e,f,g,dp):
pin_a.value(a)
pin_b.value(b)
pin_c.value(c)
pin_d.value(d)
pin_e.value(e)
pin_f.value(f)
pin_g.value(g)
pin_dp.value(dp)
#Funcion para pruebas de conexion y funcionamiento
def funcionamiento():
driver(H, H, H, H, H, H, H, H)
sleep(1)
driver(L, L, L, L, L, L, L, L)
#Funcion que compara cada numero
def numeros(numero):
#Numero 0
if numero == 0:
driver(H, H, H, H, H, H, L, L)
#Numero 1
if numero == 1:
driver(L, H, H, L, L, L, L, L)
#Numero 2
if numero == 2:
driver(H, H, L, H, H, L, H, L)
#Numero 3
if numero == 3:
driver(H, H, H, H, L, L, H, L)
#Numero 4
if numero == 4:
driver(L, H, H, L, L, H, H, L)
#Numero 5
if numero == 5:
driver(H, L, H, H, L, H, H, L)
#Numero 6
if numero == 6:
driver(H, L, H, H, H, H, H, H)
#Numero 7
if numero == 7:
driver(H, H, H, L, L, L, L, L)
#Numero 8
if numero == 8:
driver(H, H, H, H, H, H, H, L)
#Numero 9
if numero == 9:
driver(H, H, H, H, L, H, H, H)
#Prueba de conexion y funcionamiento
funcionamiento()
numeros(numero)
#Bucle de repeticion infinita
while 1:
#Si el estado del Pin de entrada up es LOW
if (pin_btn_up.value() == 0):
#Retardo Antirrebote
sleep(0.005)
#Mientras el estado del Pin sea LOW ingresa al bucle
while(pin_btn_up.value() == 0):
continue
#Incrementa la variable en una unidad
numero = numero+1
#Si el valor de numero es mayor a 9
if numero > 9:
#Asigna el valor 0 a numero
numero = 0
#Envia a la funcion el valor de numero
numeros(numero)
#Si el estado del Pin de entrada down es LOW
if (pin_btn_down.value() == 0):
#Retardo Antirrebote
sleep(0.005)
#Mientras el estado del Pin sea LOW ingresa al bucle
while(pin_btn_down.value() == 0):
continue
#Decrementa la variable en una unidad
numero = numero-1
#Si el valor de numero es menor a 0
if numero < 0:
#Asigna el valor 9 a numero
numero = 9
#Envia a la funcion el valor de numero
numeros(numero)
#Retardo 100ms
sleep(0.1)
¿Cómo funciona el Sketch?
El Sketch funciona de la siguiente manera:
- Al energizar la placa, en el display se encenderán todos los segmentos, para así comprobar que tanto el display como su conexión se encuentren de manera correcta.
- Posterior a esto el display mostrará el número de inicio el cual es el 0.
- Al presionar el pulsador de incremento, la variable numero aumenta en una unidad siendo el valor máximo 9, si supera dicho valor se le asigna el valor de 0, todo esto será visualizado en el display.
- Al presionar el pulsador de decremento, la variable numero disminuye en una unidad siendo el valor mínimo 0, si supera dicho valor se le asigna el valor de 9, todo esto será visualizado en el display.








