from machine import Pin
import dht
import time
# Configura los pines de los relevadores
rele_frio = Pin(2, Pin.OUT) # Relay “FRÍO”
rele_ambiente = Pin(4, Pin.OUT) # Relay “AMBIENTE”
rele_calor = Pin(5, Pin.OUT) # Relay “CALOR”
# Configura el sensor DHT22 en el GPIO 15
sensor = dht.DHT22(Pin(15))
# Umbrales de temperatura (en °C)
UMBRAL_FRIO = 15 # por debajo de este valor → FRÍO
UMBRAL_CALOR = 30 # por encima de este valor → CALOR
# entre UMBRAL_FRIO y UMBRAL_CALOR → AMBIENTE
def actualizar_relevadores(temp):
"""
Activa un solo relevador según el rango de temperatura.
"""
if temp < UMBRAL_FRIO:
# Sólo rele_frio ON
rele_frio.value(1)
rele_ambiente.value(0)
rele_calor.value(0)
elif temp > UMBRAL_CALOR:
# Sólo rele_calor ON
rele_frio.value(0)
rele_ambiente.value(0)
rele_calor.value(1)
else:
# Sólo rele_ambiente ON
rele_frio.value(0)
rele_ambiente.value(1)
rele_calor.value(0)
# Bucle principal
while True:
try:
sensor.measure() # Toma la lectura
temperatura = sensor.temperature() # °C
print("Temperatura:", temperatura, "°C")
actualizar_relevadores(temperatura)
except OSError as err:
# Si hay error de lectura, apaga todos
print("Error al leer DHT22:", err)
rele_frio.value(0)
rele_ambiente.value(0)
rele_calor.value(0)
time.sleep(2) # espera 2 segundos entre lecturas