from machine import Pin, enable_irq, disable_irq # Importar módulos para manejar pines y control de interrupciones
import dht # módulo para el sensor DHT22
import time # módulo para manejar el tiempo
# Definir pines
DHT_PIN = 4 # Pin para el sensor DHT22
LED_TEMP_PIN = 14 # Pin para el LED de temperatura
LED_HUM_PIN = 15 # Pin para el LED de humedad
BTN_TEMP_PIN = 26 # Pin para el botón de temperatura
BTN_HUM_PIN = 27 # Pin para el botón de humedad
# Umbrales de la temperatura y humedad
UMBRAL_TEMP = 45.0 # temperatura en grados Celsius
UMBRAL_HUM_BAJA = 25.0 # Umbral de la bajo humedad y en porcentaje
UMBRAL_HUM_ALTA = 60.0 # Umbral de la humedad alto y en porcentaje
# Inicializacion del sensor para medir las temperatura y humedad
dht_sensor = dht.DHT22(Pin(DHT_PIN))
# Inicializacion de los LEDs
led_temp = Pin(LED_TEMP_PIN, Pin.OUT)
led_hum = Pin(LED_HUM_PIN, Pin.OUT)
# Inicializacion de los botones
btn_temp = Pin(BTN_TEMP_PIN, Pin.IN, Pin.PULL_UP)
btn_hum = Pin(BTN_HUM_PIN, Pin.IN, Pin.PULL_UP)
# Variables para controlar el estado de los LEDs (encendido u apagado)
temp_led_encendido = False
hum_led_encendido = False
# función para verificar condiciones ambientales
def verificar_condiciones():
global temp_led_encendido, hum_led_encendido
try:
dht_sensor.measure() #medición con el sensor
temp = dht_sensor.temperature() # Obtener temperatura que da el sensor
hum = dht_sensor.humidity() # Obtener humedad
print("La temperatura es de: {} °C, y la Humedad es de: {} %".format(temp, hum))
# Control del LED de la temperatura
if temp > UMBRAL_TEMP:
led_temp.value(1) # Encender si supera el umbral
temp_led_encendido = True
else:
led_temp.value(0) # Apagar si está por debajo del umbral
temp_led_encendido = False
# Control del LED de la humedad
if hum < UMBRAL_HUM_BAJA or hum > UMBRAL_HUM_ALTA:
led_hum.value(1) # Encender si está fuera de los umbrales dados
hum_led_encendido = True
else:
led_hum.value(0) # Apagar si está dentro de los umbrales dados
hum_led_encendido = False
except OSError as e:
print("Hubo un error en el sensor!:", e) # Manejador de errores
# función para el botón de temperatura
def btn_temp_presionado(pin):
global temp_led_encendido
if btn_temp.value() == 0: # Verificar si el botón está presionado
led_temp.value(0) # Apagar LED de temperatura
temp_led_encendido = False
print("Se ha presionado el botón de temperatura")
# función para el botón de humedad
def btn_hum_presionado(pin):
global hum_led_encendido
if btn_hum.value() == 0: # Verificar si el botón está presionado
led_hum.value(0) # Apagar LED de humedad
hum_led_encendido = False
print("Se ha presionado el botón de humedad")
# interrupciones para los botones
btn_temp.irq(trigger=Pin.IRQ_FALLING, handler=btn_temp_presionado)
btn_hum.irq(trigger=Pin.IRQ_FALLING, handler=btn_hum_presionado)
while True:
verificar_condiciones() # Llamada a la función para verificar las condiciones ambientales
time.sleep(1) # Esperar un segundo antes de verificar nuevamente si hubo algún cambio.