from machine import Pin
import time

# Configuración de LEDs
ledred = Pin(6, Pin.OUT)
ledgreen = Pin(7, Pin.OUT)
ledblue = Pin(8, Pin.OUT)

# Configuración de botones
boton1 = Pin(18, Pin.IN, Pin.PULL_UP)
boton2 = Pin(19, Pin.IN, Pin.PULL_UP)
boton3 = Pin(20, Pin.IN, Pin.PULL_UP)

def llenado(matx):
    i = 0
    k = 0
    j = 0
    print("Presione los botones para llenar la matriz: ")
    
    for i in range(3):
        j = 0
        while j < 10:  # Cambiado a 10
                       
            if boton1.value() == 0:  # Botón rojo
                print(f"A[", i, ",", j, "]: r", end=" ")
                print()
                matx[k + j] = "r"
                ledred.value(1)
            elif boton2.value() == 0:  # Botón verde
                print(f"A[", i, ",", j, "]: g", end=" ")
                print()
                matx[k + j] = "g"
                ledgreen.value(1)
            elif boton3.value() == 0:  # Botón azul
                print(f"A[", i, ",", j, "]: b", end=" ")
                print()
                matx[k + j] = "b"
                ledblue.value(1)
            else:
                time.sleep(0.1)  # Esperar un poco antes de seguir
                continue

            j += 1  # Aumentar el contador solo si se presionó un botón
            time.sleep(0.1)  # Esperar un poco para evitar rebotes
        k += 10  # Cambiado a 10
        print(" ")

def despliegue(matx):
    k = 0
    for i in range(3):
        for j in range(10):  # Cambiado a 10
            dato = matx[k + j]
            print(dato, "  ", end="")
            if dato == "r":
                ledred.value(1)
                ledgreen.value(0)
                ledblue.value(0)
            elif dato == "g":
                ledred.value(0)
                ledgreen.value(1)
                ledblue.value(0)
            elif dato == "b":
                ledred.value(0)
                ledgreen.value(0)
                ledblue.value(1)
            time.sleep(1)
        k += 10  # Cambiado a 10
        print(" ")

def borrado(matx):
    for i in range(30):  # Cambiado a 30
        matx[i] = "0"

def ordenado_ascendente(matx):
    matx.sort(key=lambda x: {"r": 1, "g": 2, "b": 3}.get(x, 0))

if __name__ == '__main__':
    mata = ["0"] * 30  # Cambiado a 30
    while True:
        print("\nSeleccione una operación:")
        print("1. Llenado de matriz")
        print("2. Despliegue de matriz")
        print("3. Borrado de matriz")
        print("4. Ordenado ascendente de la matriz")
        print("5. Salir")
        opcion = input("Ingrese el número de la operación: ")
        
        if opcion == '1':
            llenado(mata)
        
        elif opcion == '2':
            print("Matriz actual:")
            despliegue(mata)
        
        elif opcion == '3':
            borrado(mata)
            print("Matriz borrada.")
        
        elif opcion == '4':
            ordenado_ascendente(mata)
            print("Matriz ordenada ascendentemente:")
            despliegue(mata)
     
Loading
pi-pico-w