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.