import machine
import time
import dht
from machine import Pin, SoftI2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
sensor = dht.DHT22(machine.Pin(4))
I2C_ADDR=0x27
filas=2
columnas=16
i2c=SoftI2C(scl=Pin(22), sda=Pin(21), freq=10000)
lcd=I2cLcd(i2c, I2C_ADDR, filas, columnas)
rojo=machine.Pin(5, machine.Pin.OUT)
verde=machine.Pin(17, machine.Pin.OUT)
celeste=machine.Pin(16, machine.Pin.OUT)
# Configuración de la alarma (modifica estas variables según sea necesario)
alarm_hour = 10
alarm_minute = 51
alarm_active = True # Activa la alarma
def set_alarm(hour, minute):
global alarm_hour, alarm_minute, alarm_active
alarm_hour = hour
alarm_minute = minute
alarm_active = True
# Configuración inicial de la hora a las 10:37 AM
current_time = (0, 0, 0, 10, 50, 57, 0, 0) # (año, mes, día, hora, minuto, segundo, día de la semana, día del año)
while True:
sensor.measure()
t = sensor.temperature()
h = sensor.humidity()
if alarm_active:
rojo.off()
verde.off()
celeste.off()
else:
if t >= 30:
rojo.on()
verde.off()
celeste.off()
elif t <= 15:
rojo.off()
verde.off()
celeste.on()
else:
rojo.off()
verde.on()
celeste.off()
sensor.measure()
t = sensor.temperature()
h = sensor.humidity()
lcd.putstr("T=" + str(t) + " H= " + str(h))
# Mostrar hora actual en el LCD
lcd.move_to(0, 1)
lcd.putstr("Time: {:02d}:{:02d}:{:02d}".format(current_time[3], current_time[4], current_time[5]))
# Verificar si la alarma está configurada y si es hora de activarla
if alarm_active and current_time[3] == alarm_hour and current_time[4] == alarm_minute:
rojo.on()
verde.on()
celeste.on()
# Incrementar el tiempo
current_time = (current_time[0], current_time[1], current_time[2], current_time[3], current_time[4], current_time[5] + 1, current_time[6], current_time[7])
if current_time[5] >= 60:
current_time = (current_time[0], current_time[1], current_time[2], current_time[3], current_time[4] + 1, 0, current_time[6], current_time[7])
if current_time[4] >= 60:
current_time = (current_time[0], current_time[1], current_time[2], current_time[3] + 1, 0, current_time[5], current_time[6], current_time[7])
if current_time[3] >= 24:
current_time = (current_time[0], current_time[1], current_time[2] + 1, 0, current_time[4], current_time[5], current_time[6], current_time[7])
# Esperar un segundo
time.sleep(1)