# 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)