from machine import Pin, ADC, PWM, I2C, time_pulse_us
from ssd1306 import SSD1306_I2C
import dht
import time
import _thread
import utime
import framebuf
from math import sin, cos, radians
from presentacion import mostrar_presentacion
from SOKOBAN import *
from CALCULADORA import *
from LECTURAS import *
#from pivot_test_script import *
import network
import urequests
import ujson
# === WIFI & SERVER CONFIG ===
SSID = 'FLIA-MR'
PASSWORD = 'MR782605'
PHP_URL = 'http://192.168.0.14/insertar.php'
NODO_ID = 'LUCHO96'
# === OLED ===
WIDTH = 128
HEIGHT = 64
i2c = I2C(0, scl=Pin(5), sda=Pin(4))
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)
led_proximidad = Pin(18, Pin.OUT)
btn_up = Pin(12, Pin.IN, Pin.PULL_UP)
btn_down = Pin(11, Pin.IN, Pin.PULL_UP)
btn_left = Pin(13, Pin.IN, Pin.PULL_UP)
btn_right = Pin(10, Pin.IN, Pin.PULL_UP)
#reset_btn = Pin(15, Pin.IN, Pin.PULL_UP)
buzzer = PWM(Pin(14))
#boton_d = Pin(13, Pin.IN, Pin.PULL_UP)
sensor_dht = dht.DHT22(Pin(19))
trigger = Pin(7, Pin.OUT)
echo = Pin(6, Pin.IN)
# === Menú ===
menu_items = [
"CALEND", "CALC",
"ANALOG CLOCK", "CRONO",
"DHT", "HC-SR04",
"DUAL CLOCK", "SOKO"
]
fila = 0
columna = 0
last_joy = time.ticks_ms()
JOY_DELAY = 250
# === Lectura sensores ===
temperatura = 0
humedad = 0
distancia = 0
def conectar_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Conectando a WiFi...")
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print("Conectado, IP:", wlan.ifconfig()[0])
return wlan.ifconfig()[0]
def leer_dht():
try:
sensor_dht.measure()
temp = round(sensor_dht.temperature(), 1) # Ej: 24.7
hum = round(sensor_dht.humidity(), 1)
except:
temp = hum = 0.0
return temp, hum
def medir_distancia():
try:
trigger.low()
time.sleep_us(2)
trigger.high()
time.sleep_us(10)
trigger.low()
duration = time_pulse_us(echo, 1, 30000)
distancia = (duration / 2) / 29.1
if distancia < 0 or distancia > 400:
return None
return round(distancia, 1)
except:
return None
def enviar_a_base_datos(temp, hum, dist):
datos = {
"nodo_ID": NODO_ID,
"temperature": temp,
"humidity": hum,
"distance": dist,
}
try:
r = urequests.post(PHP_URL, data=ujson.dumps(datos), headers={"Content-Type": "application/json"})
print("Dato Enviado:", r.text)
r.close()
except Exception as e:
print("Error al enviar:", e)
# === Display sensores ===
def actualizar_oled():
oled.fill(0)
oled.text("Tarea: Sensores", 0, 0)
oled.text(f"T:{temperatura}C", 0, 15)
oled.text(f"H:{humedad}%", 0, 25)
oled.text(f"Dist:{distancia}cm", 0, 40)
oled.show()
def leer_botones():
global fila, columna, last_joy
now = time.ticks_ms()
if time.ticks_diff(now, last_joy) < JOY_DELAY:
return
moved = False
if not btn_down.value():
fila = (fila + 1) % len(menu_items)
beep()
time.sleep(0.2)
elif not btn_up.value():
fila = (fila - 1) % len(menu_items)
beep()
time.sleep(0.2)
elif btn_right.value() == 0:
print("Derecha")
beep()
columna = min(1, columna + 1)
moved = True
while btn_right.value() == 0:
time.sleep(0.05)
if btn_left.value() == 0:
print("Izquierda")
beep_select()
t_inicio = time.ticks_ms()
parpadeo = False
while btn_left.value() == 0:
t_actual = time.ticks_ms()
duracion = time.ticks_diff(t_actual, t_inicio)
if duracion % 400 < 200:
if not parpadeo:
mostrar_menu(parpadeo_off=True)
parpadeo = True
else:
if parpadeo:
mostrar_menu(parpadeo_off=False)
parpadeo = False
if duracion >= 1500:
index = fila
print(f"SELECCIONAR: {menu_items[index]}")
ejecutar_opcion(index)
mostrar_menu()
return
time.sleep(0.05)
columna = max(0, columna - 1)
moved = True
if moved:
mostrar_menu()
last_joy = time.ticks_ms()
# === Menú ===
bytearray_logo_soko = bytearray([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf0, 0x3f, 0x00, 0x0f, 0xc0, 0xff, 0xf0,
0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0xff, 0x87, 0x00, 0x3f, 0xc0, 0x0f, 0x1f, 0xf0,
0xff, 0x1f, 0xe7, 0xff, 0xfe, 0x3f, 0x8f, 0xf0, 0xff, 0x3f, 0xa7, 0xff, 0xfe, 0x5f, 0xcf, 0xf0,
0xff, 0x3f, 0x87, 0xff, 0xfe, 0x5d, 0xe7, 0xf0, 0xfe, 0x79, 0xf3, 0xff, 0xfe, 0x78, 0xe7, 0xf0,
0xfe, 0x70, 0xf3, 0xff, 0xfe, 0x78, 0xe3, 0xf0, 0xfc, 0x70, 0xf3, 0xff, 0xfc, 0xfd, 0xf3, 0xf0,
0xfc, 0xc0, 0x33, 0xff, 0xfc, 0xcf, 0x83, 0xf0, 0xfc, 0x86, 0x19, 0xff, 0xf8, 0x8f, 0x81, 0xf0,
0xf8, 0xc0, 0x38, 0x00, 0x00, 0x8f, 0x89, 0xf0, 0xf9, 0xf9, 0xfc, 0x00, 0x01, 0xdf, 0xd9, 0xf0,
0xf9, 0xf0, 0xff, 0xff, 0xff, 0xf8, 0xf8, 0xf0, 0xf9, 0xf0, 0xff, 0xff, 0xff, 0xf8, 0xfc, 0xf0,
0xf1, 0xff, 0xf0, 0xff, 0xf8, 0xf8, 0xfc, 0xf0, 0xf3, 0xff, 0xe0, 0x7f, 0xf0, 0x7f, 0xfc, 0xf0,
0xf3, 0xff, 0xe0, 0x7f, 0xe0, 0x3f, 0xfc, 0xf0, 0xf3, 0xff, 0xe0, 0x7f, 0xe0, 0x3f, 0xfc, 0x70,
0xf3, 0xff, 0xe0, 0x7f, 0xf0, 0x7f, 0xfe, 0x70, 0xe3, 0xff, 0xf0, 0xfd, 0xf8, 0xff, 0xfe, 0x70,
0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x70, 0xe7, 0xff, 0xc0, 0x00, 0x00, 0x1f, 0xfe, 0x70,
0xe7, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x70, 0xe7, 0xfe, 0x38, 0x7f, 0xe0, 0xc7, 0xfe, 0x70,
0xe7, 0xfe, 0x7f, 0xff, 0xff, 0xe3, 0xfe, 0x70, 0xe7, 0xfc, 0x7f, 0xff, 0xff, 0xf3, 0xfe, 0x70,
0xe7, 0xfc, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x70, 0xe7, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xfe, 0x70,
0xe3, 0xf9, 0xff, 0xff, 0xff, 0xf9, 0xfe, 0x70, 0xf3, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xfe, 0x70,
0xf3, 0xf1, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0x70, 0xf1, 0xf3, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xf0,
0xf9, 0xe3, 0xff, 0xff, 0xff, 0xfe, 0x78, 0xf0, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x01, 0xf0,
0xfc, 0x07, 0xff, 0xff, 0xff, 0xff, 0x03, 0xf0, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
])
bytearray_logo_calculadora = bytearray([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xf0,
0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf0,
0xff, 0xce, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf0, 0xff, 0xcc, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf0,
0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0, 0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0,
0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0, 0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0,
0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0, 0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0,
0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0, 0xff, 0xcc, 0xff, 0xff, 0xff, 0xfd, 0xcf, 0xf0,
0xff, 0xcc, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf0, 0xff, 0xce, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xf0,
0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf0,
0xff, 0xcc, 0x03, 0xe0, 0x1f, 0x01, 0xcf, 0xf0, 0xff, 0xcc, 0x73, 0xe7, 0x9e, 0x39, 0xcf, 0xf0,
0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0,
0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0,
0xff, 0xcc, 0xf3, 0xe7, 0x9e, 0x79, 0xcf, 0xf0, 0xff, 0xcc, 0x03, 0xe0, 0x1f, 0x01, 0xcf, 0xf0,
0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf0,
0xff, 0xce, 0x03, 0xe0, 0x1f, 0x01, 0xcf, 0xf0, 0xff, 0xcc, 0x03, 0xe0, 0x1e, 0x01, 0xcf, 0xf0,
0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0,
0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0,
0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0x03, 0xe0, 0x1e, 0x7d, 0xcf, 0xf0,
0xff, 0xce, 0x03, 0xe0, 0x1e, 0x7d, 0xcf, 0xf0, 0xff, 0xcf, 0xff, 0xff, 0xfe, 0x7d, 0xcf, 0xf0,
0xff, 0xcf, 0xff, 0xff, 0xfe, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0x03, 0xe0, 0x1e, 0x7d, 0xcf, 0xf0,
0xff, 0xcc, 0x73, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0,
0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0,
0xff, 0xcc, 0xfb, 0xe7, 0x9e, 0x7d, 0xcf, 0xf0, 0xff, 0xcc, 0x73, 0xe7, 0x9e, 0x39, 0xcf, 0xf0,
0xff, 0xcc, 0x03, 0xe0, 0x1f, 0x01, 0xcf, 0xf0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xf0,
0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf0, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf0,
0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
])
bytearray_logo_analogico = bytearray([
0xff, 0xff, 0xfe, 0xe0, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfc, 0xf0, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfd, 0xe0, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xf9, 0xe0, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xe7, 0xff, 0xf1, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xc7, 0x00, 0x71, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xc0, 0x7f, 0x80, 0xff, 0xff, 0xf0,
0xff, 0xff, 0x83, 0xff, 0xe0, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x8f, 0x80, 0x78, 0x7f, 0xff, 0xf0,
0xff, 0xfe, 0x1c, 0x08, 0x1e, 0x3f, 0xff, 0xf0, 0xff, 0xfe, 0x78, 0x00, 0x07, 0x1f, 0xff, 0xf0,
0xff, 0xfc, 0xe6, 0x00, 0x33, 0x8f, 0xff, 0xf0, 0xff, 0xf8, 0xc0, 0x08, 0x01, 0xc1, 0xff, 0xf0,
0xff, 0xf1, 0x80, 0x08, 0x00, 0xc1, 0xff, 0xf0, 0xff, 0xf3, 0x00, 0x08, 0x00, 0x61, 0xff, 0xf0,
0xff, 0xe3, 0x00, 0x08, 0x00, 0x73, 0xff, 0xf0, 0xff, 0xe6, 0x40, 0x08, 0x01, 0xb3, 0xff, 0xf0,
0xff, 0xe6, 0x00, 0x08, 0x00, 0x39, 0xff, 0xf0, 0xff, 0xce, 0x00, 0x08, 0x00, 0x19, 0xff, 0xf0,
0xff, 0xcc, 0x00, 0x08, 0x00, 0x19, 0xff, 0xf0, 0xff, 0xcc, 0x00, 0x08, 0x00, 0x19, 0xff, 0xf0,
0xff, 0xcc, 0x00, 0x08, 0x00, 0x18, 0x3f, 0xf0, 0xff, 0xcd, 0x80, 0x1c, 0x00, 0x58, 0x3f, 0xf0,
0xff, 0xcd, 0x00, 0x1c, 0x00, 0x58, 0x3f, 0xf0, 0xff, 0xcc, 0x00, 0x02, 0x00, 0x18, 0x7f, 0xf0,
0xff, 0xcc, 0x00, 0x03, 0x00, 0x19, 0xff, 0xf0, 0xff, 0xcc, 0x00, 0x01, 0x80, 0x19, 0xff, 0xf0,
0xff, 0xc6, 0x00, 0x00, 0x40, 0x19, 0xff, 0xf0, 0xff, 0xe6, 0x00, 0x00, 0x20, 0x31, 0xff, 0xf0,
0xff, 0xe6, 0x40, 0x00, 0x11, 0xb3, 0xff, 0xf0, 0xff, 0xe3, 0x00, 0x00, 0x00, 0x73, 0xff, 0xf0,
0xff, 0xf3, 0x80, 0x00, 0x00, 0x61, 0xff, 0xf0, 0xff, 0xf1, 0x80, 0x00, 0x00, 0xc1, 0xff, 0xf0,
0xff, 0xf8, 0xc2, 0x00, 0x11, 0xc1, 0xff, 0xf0, 0xff, 0xfc, 0x76, 0x00, 0x33, 0x8b, 0xff, 0xf0,
0xff, 0xfe, 0x38, 0x08, 0x07, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x1e, 0x08, 0x1e, 0x3f, 0xff, 0xf0,
0xff, 0xff, 0x8f, 0xc0, 0xf8, 0x7f, 0xff, 0xf0, 0xff, 0xff, 0x83, 0xff, 0xe0, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xc0, 0x3f, 0x00, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xc7, 0x80, 0x71, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xe7, 0xff, 0xf1, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xf7, 0xff, 0xf3, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf9, 0xe0, 0x0f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfd, 0xf0, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfc, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfe, 0xe0, 0x1f, 0xff, 0xff, 0xf0
])
bytearray_logo_cronometro = bytearray([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf9, 0xff, 0xe0, 0xff, 0xf3, 0xff, 0xf0,
0xff, 0xf0, 0xfe, 0x00, 0x1f, 0xe1, 0xff, 0xf0, 0xff, 0xc0, 0xf0, 0x00, 0x03, 0xe0, 0xff, 0xf0,
0xff, 0x81, 0xc0, 0x00, 0x00, 0x70, 0x3f, 0xf0, 0xff, 0x80, 0x00, 0x00, 0x00, 0x20, 0x3f, 0xf0,
0xff, 0xc0, 0x01, 0xfb, 0xf0, 0x00, 0x7f, 0xf0, 0xff, 0xf8, 0x07, 0xff, 0xfc, 0x03, 0xff, 0xf0,
0xff, 0xf8, 0x0f, 0xff, 0xfe, 0x03, 0xff, 0xf0, 0xff, 0xf0, 0x6f, 0xff, 0xfe, 0xc1, 0xff, 0xf0,
0xff, 0xe0, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xf0, 0xff, 0xc1, 0xff, 0xc0, 0x0f, 0xf0, 0x7f, 0xf0,
0xff, 0x83, 0xff, 0x00, 0x03, 0xf8, 0x3f, 0xf0, 0xff, 0x87, 0xfc, 0x00, 0x01, 0xfc, 0x3f, 0xf0,
0xff, 0x07, 0xf8, 0x3f, 0x80, 0x7c, 0x1f, 0xf0, 0xff, 0x07, 0xf1, 0xff, 0xe0, 0x7c, 0x1f, 0xf0,
0xfe, 0x07, 0xe3, 0xff, 0xf8, 0x38, 0x0f, 0xf0, 0xfe, 0x1f, 0xe7, 0xff, 0xfc, 0x3f, 0x0f, 0xf0,
0xfc, 0x3f, 0xcf, 0xff, 0xfe, 0x7f, 0x0f, 0xf0, 0xfc, 0x3f, 0xdf, 0xff, 0xff, 0x7f, 0x87, 0xf0,
0xfc, 0x3f, 0x9f, 0xff, 0xfc, 0xff, 0x87, 0xf0, 0xfc, 0x7f, 0xbf, 0xff, 0xf1, 0xff, 0x87, 0xf0,
0xf8, 0x7f, 0xbf, 0xff, 0xc7, 0xff, 0xc7, 0xf0, 0xf8, 0x7f, 0xbf, 0xf3, 0x1f, 0xff, 0xc3, 0xf0,
0xf8, 0x7f, 0xff, 0xe0, 0x3f, 0xff, 0xc3, 0xf0, 0xf8, 0x1f, 0xff, 0xe0, 0xff, 0xff, 0x03, 0xf0,
0xf8, 0x3f, 0xff, 0x80, 0xff, 0xff, 0x03, 0xf0, 0xf8, 0x7f, 0xff, 0x00, 0xff, 0xff, 0xc3, 0xf0,
0xf8, 0x7f, 0xff, 0x8b, 0xff, 0xff, 0xc7, 0xf0, 0xf8, 0x7f, 0xff, 0xbf, 0xff, 0xff, 0xc7, 0xf0,
0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf0,
0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x87, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0,
0xfe, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xfe, 0x07, 0xff, 0xff, 0xff, 0xf8, 0x0f, 0xf0,
0xff, 0x07, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xf0, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xf0,
0xff, 0x87, 0xff, 0xff, 0xff, 0xfc, 0x3f, 0xf0, 0xff, 0x83, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xf0,
0xff, 0xc1, 0xff, 0xff, 0xff, 0xf0, 0x7f, 0xf0, 0xff, 0xe0, 0xff, 0xff, 0xff, 0xe0, 0xff, 0xf0,
0xff, 0xf0, 0x6f, 0xff, 0xfc, 0x81, 0xff, 0xf0, 0xff, 0xf8, 0x0f, 0xff, 0xfc, 0x03, 0xff, 0xf0,
0xff, 0xfc, 0x07, 0xff, 0xfc, 0x07, 0xff, 0xf0, 0xff, 0xfe, 0x01, 0xfb, 0xf0, 0x0f, 0xff, 0xf0,
0xff, 0xff, 0x80, 0x00, 0x00, 0x3f, 0xff, 0xf0, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xf0,
0xff, 0xff, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
])
bytearray_logo_dht22 = bytearray([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xf8, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xe1, 0xe3, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xe3, 0xf1, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xe7, 0x39, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0xfe, 0x7f, 0xff, 0xf0, 0xff, 0xf8, 0xe6, 0x39, 0xfc, 0x3f, 0xff, 0xf0,
0xff, 0xf0, 0x66, 0x39, 0xf8, 0x3f, 0xff, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0xf8, 0x1f, 0xff, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0xf0, 0x0f, 0xff, 0xf0, 0xff, 0x80, 0x66, 0x39, 0xe0, 0x0f, 0xff, 0xf0,
0xff, 0x80, 0x66, 0x39, 0xe0, 0x07, 0xff, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0xc0, 0x03, 0xff, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0x80, 0x03, 0xff, 0xf0, 0xff, 0xf0, 0x66, 0x39, 0x80, 0x01, 0xff, 0xf0,
0xff, 0xf8, 0xe6, 0x39, 0x80, 0x01, 0xff, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0xff, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0x7f, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0x7f, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0x3f, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0x3f, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0x3f, 0xf0, 0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0x1f, 0xf0,
0xff, 0xff, 0xe6, 0x39, 0x80, 0x00, 0x1f, 0xf0, 0xff, 0xff, 0xc6, 0x39, 0xc0, 0x00, 0x1f, 0xf0,
0xff, 0xff, 0x86, 0x38, 0xe0, 0x00, 0x1f, 0xf0, 0xff, 0xff, 0x0e, 0x3c, 0x70, 0x03, 0x1f, 0xf0,
0xff, 0xff, 0x1e, 0x1e, 0x30, 0x03, 0x1f, 0xf0, 0xff, 0xfe, 0x38, 0x07, 0x18, 0x06, 0x1f, 0xf0,
0xff, 0xfc, 0x70, 0x03, 0x98, 0x0e, 0x1f, 0xf0, 0xff, 0xfc, 0x60, 0x03, 0x8c, 0x1c, 0x3f, 0xf0,
0xff, 0xfc, 0xe0, 0x01, 0x8c, 0x38, 0x3f, 0xf0, 0xff, 0xfc, 0xc0, 0x01, 0xcc, 0x30, 0x7f, 0xf0,
0xff, 0xfc, 0xc0, 0x01, 0xcc, 0x00, 0xff, 0xf0, 0xff, 0xfc, 0xc0, 0x01, 0xcc, 0x01, 0xff, 0xf0,
0xff, 0xfc, 0xc0, 0x01, 0xcc, 0x03, 0xff, 0xf0, 0xff, 0xfc, 0xe0, 0x01, 0x8c, 0x1f, 0xff, 0xf0,
0xff, 0xfc, 0x60, 0x03, 0x8f, 0xff, 0xff, 0xf0, 0xff, 0xfe, 0x70, 0x03, 0x1f, 0xff, 0xff, 0xf0,
0xff, 0xfe, 0x38, 0x0f, 0x1f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0x1f, 0xfe, 0x3f, 0xff, 0xff, 0xf0,
0xff, 0xff, 0x8f, 0xf8, 0x7f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xc1, 0xe0, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
])
bytearray_logo_distancia = bytearray([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xf0,
0xff, 0xff, 0x83, 0xff, 0xfc, 0x1f, 0xff, 0xf0, 0xff, 0xfe, 0x1f, 0xff, 0xff, 0x87, 0xff, 0xf0,
0xff, 0xfc, 0x7f, 0xff, 0xff, 0xe3, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0x06, 0x00, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xc3, 0xff, 0xfc, 0x3f, 0xff, 0xf0, 0xff, 0xff, 0xcf, 0xff, 0xff, 0x3f, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xe0, 0x26, 0x40, 0x7f, 0xff, 0xf0, 0xff, 0xff, 0xc3, 0x66, 0x6c, 0x3f, 0xff, 0xf0,
0xff, 0xff, 0x83, 0x66, 0x6c, 0x1f, 0xff, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xf0,
0xff, 0xff, 0x00, 0x20, 0x40, 0x0f, 0xff, 0xf0, 0xff, 0xfe, 0x33, 0x66, 0x6c, 0xc7, 0xff, 0xf0,
0xff, 0xfe, 0x33, 0x66, 0x6c, 0xc7, 0xff, 0xf0, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0,
0xff, 0xee, 0x13, 0x66, 0x6c, 0x87, 0x7f, 0xf0, 0xff, 0xce, 0x03, 0x66, 0x6c, 0x07, 0x3f, 0xf0,
0xff, 0xce, 0x03, 0x66, 0x6c, 0x07, 0x3f, 0xf0, 0xff, 0xce, 0x00, 0x66, 0x60, 0x07, 0x3f, 0xf0,
0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0, 0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0,
0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0, 0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0,
0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0, 0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0,
0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0, 0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0,
0xff, 0xce, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xf0, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0xf0,
0xff, 0xcf, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0xf0, 0xff, 0xcf, 0x80, 0x00, 0x00, 0x1f, 0x3f, 0xf0,
0xff, 0xc7, 0xc0, 0x00, 0x00, 0x3e, 0x3f, 0xf0, 0xff, 0xc7, 0xf0, 0x00, 0x00, 0xfe, 0x3f, 0xf0,
0xff, 0xc3, 0xfc, 0x00, 0x03, 0xfc, 0x3f, 0xf0, 0xff, 0xc0, 0xff, 0x80, 0x1f, 0xf0, 0x3f, 0xf0,
0xff, 0xc0, 0x7f, 0xff, 0xff, 0xe0, 0x3f, 0xf0, 0xff, 0xc0, 0x0f, 0xff, 0xff, 0x00, 0x3f, 0xf0,
0xff, 0xc0, 0x01, 0xff, 0xf8, 0x00, 0x3f, 0xf0, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xf0,
0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf0,
0xff, 0xe7, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xf0, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
])
bytearray_logo_digital = bytearray([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x07, 0xf0,
0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xf8, 0xf0,
0xff, 0xf1, 0xff, 0x00, 0x00, 0x7f, 0xfc, 0x70, 0xff, 0xc3, 0xfe, 0x00, 0x00, 0x7f, 0xfe, 0x70,
0xff, 0x8f, 0xfc, 0x00, 0x00, 0xff, 0xfe, 0x70, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x70,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x70, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x30,
0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x30, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0x30,
0xe6, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0xcf, 0x30, 0xe4, 0xfc, 0x0f, 0xff, 0x1f, 0x0e, 0xcf, 0x30,
0xec, 0xcc, 0x07, 0xfc, 0x06, 0x06, 0x4f, 0x30, 0xcd, 0xcf, 0xe7, 0xfc, 0xe4, 0xf2, 0x4f, 0x30,
0xcd, 0xcf, 0xe7, 0xfc, 0xe4, 0xf2, 0x4f, 0x30, 0xcd, 0xcf, 0xe7, 0x9c, 0xe4, 0xf2, 0x4f, 0x30,
0xcd, 0xcf, 0xe7, 0xfc, 0xe4, 0xf2, 0x4f, 0x30, 0xcd, 0xce, 0x07, 0xfc, 0xe6, 0xf6, 0x4f, 0x30,
0xcd, 0xec, 0x0f, 0xfd, 0xfe, 0xf6, 0x4f, 0x30, 0xcd, 0xcd, 0xff, 0xfc, 0xe4, 0xf6, 0x4f, 0x30,
0xcd, 0xcd, 0xff, 0x9c, 0xe4, 0xf6, 0x4f, 0x70, 0xcd, 0xcd, 0xff, 0xbc, 0xe4, 0xf6, 0x4f, 0x70,
0xcd, 0xcd, 0xff, 0xfc, 0xe4, 0xf6, 0x4e, 0x70, 0xed, 0xcc, 0x0f, 0xfc, 0x06, 0x06, 0xdc, 0x70,
0xe4, 0xcc, 0x07, 0xfe, 0x0e, 0x06, 0xd8, 0xf0, 0xe4, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xc1, 0xf0,
0xe6, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xf0, 0xe7, 0x80, 0x00, 0x00, 0x00, 0x07, 0x8f, 0xf0,
0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
])
bytearray_logo_calendario = bytearray([
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf0,
0xff, 0xf8, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf0,
0xff, 0xf8, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xf0, 0xff, 0x88, 0x80, 0x00, 0x00, 0x11, 0x1f, 0xf0,
0xff, 0x08, 0x80, 0x00, 0x00, 0x11, 0x0f, 0xf0, 0xfe, 0x08, 0x80, 0x00, 0x00, 0x11, 0x07, 0xf0,
0xfe, 0x05, 0x80, 0x00, 0x00, 0x0b, 0x03, 0xf0, 0xfc, 0x02, 0x00, 0x00, 0x00, 0x04, 0x03, 0xf0,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xfc, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x03, 0xf0,
0xfc, 0x00, 0x00, 0x66, 0x14, 0x00, 0x03, 0xf0, 0xfc, 0x00, 0x00, 0x66, 0x10, 0x00, 0x03, 0xf0,
0xfc, 0x00, 0x00, 0x66, 0x08, 0x00, 0x03, 0xf0, 0xfc, 0x00, 0x02, 0x66, 0x08, 0x00, 0x03, 0xf0,
0xfc, 0x00, 0x03, 0x9b, 0xc8, 0x00, 0x03, 0xf0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xfe, 0x07, 0xf1, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xfc, 0x03, 0xe1, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xf8, 0x01, 0x81, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xf8, 0x61, 0x01, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xf8, 0x61, 0x01, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xfc, 0x61, 0xc1, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xff, 0xe1, 0xe1, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xff, 0x83, 0xe1, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xff, 0x03, 0xe1, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xff, 0x81, 0xe1, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xff, 0xe1, 0xe1, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xf8, 0x61, 0xe1, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xf8, 0x61, 0xe1, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xf8, 0x61, 0xe1, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xf8, 0x61, 0xe1, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xfc, 0x21, 0xe1, 0xff, 0xc3, 0xf0,
0xfc, 0x3f, 0xfc, 0x03, 0xe1, 0xff, 0xc3, 0xf0, 0xfc, 0x3f, 0xfe, 0x03, 0xe1, 0xe0, 0x03, 0xf0,
0xfc, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xf0,
0xfc, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x03, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x07, 0xf0,
0xfc, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x0f, 0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xf0,
0xfc, 0x1f, 0xff, 0xff, 0xff, 0xc0, 0x3f, 0xf0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0,
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, 0xff, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf0,
0xff, 0xe0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0
])
logos = [
framebuf.FrameBuffer(bytearray_logo_calendario, 60, 60, framebuf.MONO_HLSB),
framebuf.FrameBuffer(bytearray_logo_calculadora, 60, 60, framebuf.MONO_HLSB),
framebuf.FrameBuffer(bytearray_logo_analogico, 60, 60, framebuf.MONO_HLSB),
framebuf.FrameBuffer(bytearray_logo_cronometro, 60, 60, framebuf.MONO_HLSB),
framebuf.FrameBuffer(bytearray_logo_dht22, 60, 60, framebuf.MONO_HLSB),
framebuf.FrameBuffer(bytearray_logo_distancia, 60, 60, framebuf.MONO_HLSB),
framebuf.FrameBuffer(bytearray_logo_digital, 60, 60, framebuf.MONO_HLSB),
framebuf.FrameBuffer(bytearray_logo_soko, 60, 60, framebuf.MONO_HLSB),
]
def mostrar_menu(parpadeo_off=False):
oled.fill(0)
# --- Dibuja el logo correspondiente ---
if fila < len(logos):
oled.blit(logos[fila], 0, 0) # Mostrar el logo en la izquierda
# --- Dibuja la opción a la derecha ---
if fila < len(menu_items):
x = 64
y = 12
ancho_recuadro = 60
alto_recuadro = 40
texto = menu_items[fila]
invertido = not parpadeo_off
if " " in texto:
linea1, linea2 = texto.split(" ", 1)
x1 = x + (ancho_recuadro - len(linea1) * 8) // 2
x2 = x + (ancho_recuadro - len(linea2) * 8) // 2
y1 = y + 10
y2 = y + 22
if invertido:
oled.fill_rect(x, y, ancho_recuadro, alto_recuadro, 1)
oled.text(linea1, x1, y1, 0)
oled.text(linea2, x2, y2, 0)
else:
oled.rect(x, y, ancho_recuadro, alto_recuadro, 1)
oled.text(linea1, x1, y1, 1)
oled.text(linea2, x2, y2, 1)
else:
x_text = x + (ancho_recuadro - len(texto) * 8) // 2
y_text = y + (alto_recuadro - 8) // 2
if invertido:
oled.fill_rect(x, y, ancho_recuadro, alto_recuadro, 1)
oled.text(texto, x_text, y_text, 0)
else:
oled.rect(x, y, ancho_recuadro, alto_recuadro, 1)
oled.text(texto, x_text, y_text, 1)
oled.show()
### FUNCIONES PRINCIPALES DE CADA ITEM
def ejecutar_opcion(index):
if index == 0:
#pass
print("CALEND SELECTED")
mostrar_calendario_interactivo()
#iniciar_sokoban()
elif index == 1:
iniciar_calculadora_grafica()
print("CALEND SELECTED")
elif index == 2:
modo_reloj_analogico(oled)
elif index == 3:
modo_cronometro(oled)
elif index == 4:
mostrar_dht22(oled)
elif index == 5:
mostrar_distancia(oled)
elif index == 6:
modo_reloj_digital(oled)
elif index == 7:
iniciar_sokoban()
def beep(tiempo=0.05, freq=1000):
buzzer.freq(freq)
buzzer.duty_u16(32768) # 50% duty cycle
time.sleep(tiempo)
buzzer.duty_u16(0)
def beep_select():
beep(tiempo=0.1, freq=600)
def loop_sensores():
global temperatura, humedad
while True:
temperatura, humedad = leer_dht()
d = medir_distancia()
if d is not None:
if d > 30:
led_proximidad.on()
elif d < 4:
led_proximidad.off()
print(f"[SENSORES] Temp: {temperatura:.1f}°C | Hum: {humedad:.1f}% | Dist: {d:.1f} cm" if d is not None else "-- cm")
if d is not None:
enviar_a_base_datos(temperatura, humedad, d)
time.sleep(10) # espera para evitar spam a la BD
def obtener_fecha_hora():
try:
t = utime.localtime()
return "{:02d}/{:02d}/{:02d}".format(t[2], t[1], t[0] % 100), "{:02d}:{:02d}".format(t[3], t[4]), t[3], t[4], t[5]
except:
return "00/00/00", "00:00", 0, 0, 0
def main_loop():
#mostrar_presentacion(oled)
while True:
#presentacion()
#mostrar_zona_superior()
mostrar_menu()
oled.show()
leer_botones()
time.sleep(0.1)
#iniciar_hilo()
ip = conectar_wifi()
_thread.start_new_thread(loop_sensores, ())
main_loop()