"""
01-funciones.py
Script para Raspberry Pi Pico y placas compatibles con upython
Para el proyecto del día 2 modifica el proyecto de tal manera que no se
necesiten botones para aumentar o disminuir el numero en el display,
usaras solo las herramientas aprendidas hasta el día de hoy.
22 de Junio de 2025
"""
from machine import Pin
from utime import sleep_ms
# Configurar salidas del display
disp_a = Pin( 18, Pin.OUT)
disp_b = Pin( 19, Pin.OUT)
disp_c = Pin( 21, Pin.OUT)
disp_d = Pin( 22, Pin.OUT)
disp_e = Pin( 26, Pin.OUT)
disp_f = Pin( 28, Pin.OUT)
disp_g = Pin( 27, Pin.OUT)
disp_dp = Pin( 20, Pin.OUT)
# Configurar los pulsadores como entradas con pull-up interno
pulsador_menos = Pin(6, Pin.IN, Pin.PULL_UP) # Botón que disminuira el numero a mostrar
pulsador_mas = Pin(7, Pin.IN, Pin.PULL_UP) # Botón que aumentara el numero a mostrar
# Crear la lista de salidas
display = [
disp_a,
disp_b,
disp_c,
disp_d,
disp_e,
disp_f,
disp_g,
disp_dp
]
# Secuencia personalizada:
numero_1 = [1, 2]
numero_2 = [0, 1, 6, 4, 3]
numero_3 = [0, 1, 6, 2, 3]
numero_4 = [5, 6, 1, 2]
numero_5 = [0, 5, 6, 2, 3]
numero_6 = [0, 5, 6, 2, 3, 4]
numero_7 = [0, 1, 2]
numero_8 = [0, 1, 2, 3, 4, 5, 6]
numero_9 = [0, 1, 2, 3, 5, 6]
numero_0 = [0, 1, 2, 3, 4, 5]
punto = [7]
#lista de secuencias
secuencias = [
numero_0,
numero_1,
numero_2,
numero_3,
numero_4,
numero_5,
numero_6,
numero_7,
numero_8,
numero_9,
punto
]
# Establecer una constante con un retardo específico
RETARDO = const(200)
# Variable contador
contador = 0
def muestra_numero(matriz_led, secuencia_encendido):
"""
Esta función se encarga de cambiar el estado de un grupo de salidas de acuerdo a una secuencia especifica.
:param matriz_led: Lista de salidas a modificar.
:param secuencia_encendido: Indice del nimero a mostrar.
:return: No devuelve ningún resultado.
"""
# Apagar todos los segmentos
for segmento in matriz_led:
segmento.off()
# Seleccionar la secuencia de encendido
secuencia = secuencias[secuencia_encendido]
# Mostrar en el display el numero seleccionado
for indice in secuencia:
# Encender el LED actual de la secuencia
display[indice].on()
while True:
if pulsador_menos.value() == 0: # Si se presiona el botón menos (LOW)
if contador > 0:
contador -= 1
elif pulsador_mas.value() == 0: # Si se presiona el botón mas (LOW)
if contador < len(secuencias)-1:
contador += 1
else: # Si no se ha presionado ningún botón mostrar el ultimo numero seleccionado
muestra_numero(display, contador)
sleep_ms(RETARDO)