# Professor Cristiano Teixeira
# Sob Licença Apache 2.0

print("INICIO")
from machine import Pin, PWM, ADC, SPI
import time

#Função que faz a conversão de um valor
def map(valor, de_min, de_max, para_min, para_max):
    # Verifica se o valor está fora da faixa de entrada
    if valor < de_min:
        valor = de_min
    elif valor > de_max:
        valor = de_max
    
    # Calcula o valor mapeado
    de_variacao = de_max - de_min
    para_variacao = para_max - para_min
    
    valor_mapeado = int((valor - de_min) * para_variacao / de_variacao + para_min)
    
    return valor_mapeado

# Declaramos os pinos  
j1_ve = ADC(Pin(12))
j1_ho = ADC(Pin(13))
j1_bt = Pin(14, Pin.IN)
CLK_PIN	= Pin(18, Pin.OUT)
DATA_PIN = Pin(19, Pin.OUT)
CS_PIN = Pin(5, Pin.OUT)

# Criamos as variáveis que irão receber os valores. Sei que não precisa, mas é para fins didáticos.
vj1_ve=0 
vj1_ho=0

import max7219
spi = SPI(1, baudrate=10000000, polarity=1, phase=0, sck=Pin(4), mosi=Pin(2))
ss = Pin(5, Pin.OUT)
numerodeblocos = 1
display = max7219.Matrix8x8(spi, ss, numerodeblocos)

#teste Coluna Linha
#display.pixel(4,2,1)


# matriz
# número de linhas
nl = 8
# número de colunas
nc = 16
est =1
col=0
lin=0
matriz = [[[0,0]]*nc for x in range(nl)]
for c in range (nc):
    for l in range (nl):
        matriz[c][l] = [c,l]
print(matriz)

linha = 0
coluna = 0

while True:
    #print("J1 Vertical", j1_ve.read())
    vj1_ve=map(j1_ve.read(), 0, 4095, 0, 1024)
    #print("Leitura Vertical", j1_ve.read())
    #print("Valor Vertical", vj1_ve)
    vj1_ho=map(j1_ho.read(), 0, 4095, 0, 1024)
    #print("Leitura Horizontal", j1_ho.read())
    #print("Valor Horizontal", vj1_ho)
    
    if (j1_bt.value() == 0):
        display.fill(0)
        print("Pépe já tirei a vela!")
    if (vj1_ve > 512):
        if (linha < nl-1):
            linha = linha +1
        else:
            linha = nl-1
    if (vj1_ve < 512):
        if (linha > 0):
            linha = linha -1
        else:
            linha = 0 

    if (vj1_ho < 512):
        if (coluna < nc-1):
            coluna = coluna +1
        else:
            coluna = nl-1
    if (vj1_ho > 512):
        if (coluna > 0):
            coluna = coluna -1
        else:
            coluna = 0
    
    print("Coluna",coluna)
    print("Linha",linha)
    print(matriz[coluna][linha])
    print("===============")

    display.pixel(matriz[coluna][linha][0],matriz[coluna][linha][1],1)
    display.show()
    
    time.sleep(0.1)