from machine import Pin as pin
from utime import sleep_ms as pausaM

ledA = pin(5, pin.OUT)
ledB = pin(18, pin.OUT)
ledC = pin(19, pin.OUT)
ledD = pin(21, pin.OUT)
ledE = pin(22, pin.OUT)
ledF = pin(23, pin.OUT)
ledG = pin(26, pin.OUT)
ledH = pin(25, pin.OUT)
ledI = pin(33, pin.OUT)
ledJ = pin(32, pin.OUT)

todos = [ledA, ledB, ledC, ledD, ledE, ledF, ledG, ledH, ledI, ledJ]
todos2 = [ledA, ledC, ledE, ledG, ledI]
todos3 = [ledJ, ledH,ledF,ledD, ledB]

todos4 = [ ledA, ledC, ledE, ledG, ledI, ledB, ledD, ledF, ledH, ledJ]

print(todos4[:5])
print(todos4[5:])



def reinicio():
    ledA.value(0)
    ledB.value(0)
    ledC.value(0)
    ledD.value(0)
    ledE.value(0)
    ledF.value(0)
    ledG.value(0)
    ledH.value(0)
    ledI.value(0)
    ledJ.value(0)

def primero():
    print("Pimero")
    espera = 200  # ms

    ledA.value(0)
    ledB.value(0)
    ledC.value(0)
    ledD.value(0)
    ledE.value(0)
    ledF.value(1)
    ledG.value(1)
    ledH.value(1)
    ledI.value(1)
    ledJ.value(1)
    pausaM(espera)
    ledA.value(1)
    ledB.value(1)
    ledC.value(1)
    ledD.value(1)
    ledE.value(1)
    ledF.value(0)
    ledG.value(0)
    ledH.value(0)
    ledI.value(0)
    ledJ.value(0)
    pausaM(espera)
   


def segundo(a, b, c, d, e, f, g, h, i, j):
    print("Segundo")

    espera = 100  # ms
    ledA.value(a)
    ledB.value(b)
    ledC.value(c)
    ledD.value(d)
    ledE.value(e)
    ledF.value(f)
    ledG.value(g)
    ledH.value(h)
    ledI.value(i)
    ledJ.value(j)
    pausaM(espera)  # 0.1s


def tercero():
    print("Tercero")

    espera = 100  # ms

    for i in todos:
        i.value(1)
     
        pausaM(espera)
        i.value(1)
        i.value(0)
        i.value(1)
        pausaM(espera)

    for i in reversed(todos):
        i.value(1)
       
        pausaM(espera)
        i.value(0)
        i.value(1)
        i.value(0)
        pausaM(espera)

    


def cuarto():
    print("Cuarto")

    espera = 100  # ms
    for i in todos2:
        for j in range(1):
            i.value(not i.value())
            i.value(1)
            pausaM(espera)

    reinicio()

    for i in todos3:
        for j in range(1):
            i.value(not i.value())
            i.value(1)
            pausaM(espera)


def quinto():
    pines = [5, 18, 19, 21, 22]
    pines2 = [23, 26, 25, 33, 32]
    
    conjunto = []
    conjunto2 = []


    for i in pines:
        conjunto.append(pin(i, pin.OUT))

    for i in pines2:
        conjunto2.append(pin(i, pin.OUT))

    # print(conjunto)

    print("Quinto")
    espera = 200

    for i in conjunto:
        i.value(not i.value())
        pausaM(espera)
    for i in reversed(conjunto2):
        i.value(not i.value())
        pausaM(espera)


def sexto():
    print("Sexto")
    espera = 200  # ms
    # sl1 = slice(5)
    # sl2 = slice(5, 10)

    for i in todos4[:5]:
        for j in range(1):
            i.value(not i.value())

    pausaM(espera)

    for i in todos4[5:]:
        for j in range(1):
            i.value(not i.value())

    for i in todos4[:5]:
        for j in range(1):
            i.value(not i.value())
    pausaM(espera)
  


while True:
    primero()
    primero()
    primero()

    reinicio()

    segundo(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    segundo(0, 0, 0, 0, 1, 1, 0, 0, 0, 0)
    segundo(0, 0, 0, 1, 1, 1, 1, 0, 0, 0)
    segundo(0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
    segundo(0, 1, 1, 1, 1, 1, 1, 1, 1, 0)
    segundo(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    segundo(0, 1, 1, 1, 1, 1, 1, 1, 1, 0)
    segundo(0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
    segundo(0, 0, 0, 1, 1, 1, 1, 0, 0, 0)
    segundo(0, 0, 0, 0, 1, 1, 0, 0, 0, 0)
    segundo(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    segundo(0, 0, 0, 0, 1, 1, 0, 0, 0, 0)
    segundo(0, 0, 0, 1, 1, 1, 1, 0, 0, 0)
    segundo(0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
    segundo(0, 1, 1, 1, 1, 1, 1, 1, 1, 0)
    segundo(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    segundo(0, 1, 1, 1, 1, 1, 1, 1, 1, 0)
    segundo(0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
    segundo(0, 0, 0, 1, 1, 1, 1, 0, 0, 0)
    segundo(0, 0, 0, 0, 1, 1, 0, 0, 0, 0)

    reinicio()

    tercero()
    tercero()
    tercero()

    reinicio()

    cuarto()
    cuarto()
    cuarto()

    reinicio()

    quinto()
    quinto()
    quinto()

    reinicio()

    sexto()
    sexto()
    sexto()

    reinicio()