from machine import Pin, Timer
import time
import network
import BlynkLib
# ---------------------------------------------------------------------- #
# ENCO #
# ---------------------------------------------------------------------- #
def enco_pulsador():
global m_pulsador
if pulsador.value():
m_pulsador = False
elif not m_pulsador:
m_pulsador = True
return True
def enco_encoder():
global m_encoder
val = [canal.value() for canal in encoder]
if all(val):
m_encoder = False
elif not m_encoder:
m_encoder = True
return 2 * val[0] - 1
pulsador = Pin(5, Pin.IN, Pin.PULL_UP)
encoder = [Pin(4, Pin.IN), Pin(16, Pin.IN)]
m_pulsador = False
m_encoder = False
# ---------------------------------------------------------------------- #
# WIFI #
# ---------------------------------------------------------------------- #
def wifi_update():
aj_wifi = ajustes["Red Wi-Fi"]
keep = aj_wifi["Keep"]
nombre = aj_wifi["Nombre"]
contra = aj_wifi["Contra"]
if keep and not sta_if.active():
print(f"Conectando a {nombre}")
sta_if.active(True)
sta_if.connect(nombre, contra)
elif not keep and sta_if.active():
sta_if.disconnect()
sta_if.active(False)
print(f"Desconectado de {nombre}")
aj_wifi["Conn"] = sta_if.isconnected()
aj_wifi["IPad"] = sta_if.ifconfig()[0]
sta_if = network.WLAN(network.STA_IF)
# ---------------------------------------------------------------------- #
# BLYN #
# ---------------------------------------------------------------------- #
def blyn_write():
blynk.virtual_write(0, "Hola")
def blyn_update():
global blynk
wifi_conn = ajustes["Red Wi-Fi"]["Conn"]
if wifi_conn and not blynk:
blynk = BlynkLib.Blynk(auth)
elif not wifi_conn and blynk:
blynk = None
if blynk:
try:
blyn_write()
blynk.run()
except Exception as e:
print(f"Blynk error: {e}")
blynk = None
auth = "dRuYnehewHCvLmmO5QL2wugxLNZE68gc"
# ---------------------------------------------------------------------- #
# MAIN #
# ---------------------------------------------------------------------- #
def main_timer1():
global v_pulsador
global v_encoder
if v_pulsador:
# print(True)
aj_wifi = ajustes["Red Wi-Fi"]
aj_wifi["Keep"] = not aj_wifi["Keep"]
v_pulsador = None
if v_encoder:
print(v_encoder)
v_encoder = None
blyn_update()
wifi_update()
def main_timer2(timer):
global v_pulsador
global v_encoder
v = enco_pulsador()
if v:
v_pulsador = v
v = enco_encoder()
if v:
v_encoder = v
ajustes = {
"Red Wi-Fi": {
"Conn": False,
"Keep": False,
"Nombre": "Wokwi-GUEST",
"Contra": "",
"IPad": ""
}
}
T_CICLO = 500
v_pulsador = None
v_encoder = None
timer = Timer(1)
timer.init(freq=500, callback=main_timer2)
deadline = time.ticks_ms()
while True:
# tiempo_test = time.time_ns()
main_timer1()
# t = (time.time_ns() - tiempo_test) / 10**6
# print(f"Tiempo: {int(t)} ms")
deadline = time.ticks_add(deadline, T_CICLO)
while time.ticks_diff(deadline, time.ticks_ms()) > 0:
time.sleep_ms(1)