from machine import Pin, reset, Timer
from network import WLAN, STA_IF
from ntptime import settime
from time import localtime, sleep_ms
from neopixel import NeoPixel
### WIFI aula 27/06 ###
rede = WLAN(STA_IF)
rede.active(True)
sleep_ms(100)
if not rede.isconnected():
rede.connect('Wokwi-GUEST','')
tentativas = 0
while not rede.isconnected() and tentativas < 20:
sleep_ms(250)
tentativas += 1
if rede.isconnected():
try:
settime()
except:
print('Erro ao sincronizar a hora inicial')
else:
reset()
### TIMER PARA ATUALIZAR HORA A CADA 6 HORAS - atendimento 08/07 ### precisa estar fora do loop porque ele funciona sozinho, como um relógio invisível, se estivesse no while ficaria criando timers infinitos
def atualizaHora(t):
if rede.isconnected():
try:
settime()
print("Hora atualizada pelo Timer:", localtime())
except:
print("Erro ao atualizar hora no Timer")
timm = Timer(0)
timm.init(period=21600000, mode=Timer.PERIODIC, callback=atualizaHora)
# period ='de quanto em quanto tempo', mode = se é pra fazer uma vez ou em looping, callback = vai executar a função no período determinado
### DICIONÁRIO BINÁRIO ###
nums_binarios = {
0: [0, 0, 0, 0],
1: [0, 0, 0, 1],
2: [0, 0, 1, 0],
3: [0, 0, 1, 1],
4: [0, 1, 0, 0],
5: [0, 1, 0, 1],
6: [0, 1, 1, 0],
7: [0, 1, 1, 1],
8: [1, 0, 0, 0],
9: [1, 0, 0, 1],
}
### FUNÇÃO 12H ###
def converter_para_12h(h):
if h == 0:
return 12
elif h > 12:
return h - 12
else:
return h
ledinhos = NeoPixel(Pin(5, Pin.OUT), 16)
print(localtime())
while True:
r = localtime()
hora24 = r[3]
minuto = r[4]
hora12 = converter_para_12h(hora24)
hora_dezena = hora12 // 10
hora_unidade = hora12 % 10
minuto_dezena = minuto // 10
minuto_unidade = minuto % 10
HD = nums_binarios[hora_dezena]
HU = nums_binarios[hora_unidade]
MD = nums_binarios[minuto_dezena]
MU = nums_binarios[minuto_unidade]
hora_certa = HD + HU + MD + MU
# Cor ledinhos --> turno #
if 8 <= hora24 < 18:
cor_da_hora = (255, 255, 0) # amarelo
elif hora24 == 18:
cor_da_hora = (255, 0, 0) # vermelho
elif 19 <= hora24 or hora24 < 6:
cor_da_hora = (255, 0, 255) # rosa
elif 6 <= hora24 < 8:
cor_da_hora = (255, 100, 0) # laranja
# Acende ledinhos --> hora certa #
for i in range(16):
if hora_certa[i] == 1:
ledinhos[i] = cor_da_hora
else:
ledinhos[i] = (0, 0, 0)
# Ciclo AMPM #
if hora24 >= 12:
ledinhos[0] = cor_da_hora
else:
ledinhos[0] = (0, 0, 0)
ledinhos.write()
sleep_ms(1000)