from machine import Pin
import time
import dht
from tm1637 import TM1637Decimal
# 1. Configuración del sensor DHT22 en GPIO 23
dht_sensor = dht.DHT22(Pin(23))
# 2. Configuración del Display de 4 Dígitos (TM1637) en GPIO 18 (CLK) y GPIO 19 (DIO)
display = TM1637Decimal(clk=Pin(18), dio=Pin(19))
display.brightness(7)
# 3. Configuración del pulsador en GPIO 14 (con resistencia pull-down interna)
pulsador = Pin(14, Pin.IN, Pin.PULL_DOWN)
# 4. Configuración de los LEDs indicadores
led_temperatura = Pin(26, Pin.OUT)
led_humedad = Pin(27, Pin.OUT)
# Estado inicial: Arrancamos mostrando Temperatura (LED Amarillo encendido)
led_temperatura.value(1)
led_humedad.value(0)
modo_humedad = False # Variable de control de estado
print("--- SISTEMA CLIMÁTICO CON PULSADOR INICIADO ---")
while True:
try:
# Leer valores del sensor DHT22
dht_sensor.measure()
temperatura = dht_sensor.temperature()
humedad = dht_sensor.humidity()
# 1. Detectar si se presionó el pulsador
if pulsador.value() == 1:
# Cambiar el estado de la bandera (alternar entre True y False)
modo_humedad = not modo_humedad
print(f"Estado del Pulsado: {modo_humedad}")
# Anti-rebote básico: esperar a que el usuario suelte el botón
while pulsador.value() == 1:
time.sleep_ms(20)
# 2. Actualizar salidas según el modo activo
if modo_humedad:
# Modo Humedad: Enciende LED Azul (27), apaga Amarillo (26)
led_temperatura.value(0)
led_humedad.value(1)
print(f"Mostrando Humedad: {humedad} %")
display.scroll("Humedad", delay=300)
display.show(f"{int(humedad)} H") # Muestra el valor numérico en el display
else:
# Modo Temperatura: Enciende LED Amarillo (26), apaga Azul (27)
led_temperatura.value(1)
led_humedad.value(0)
print(f"Mostrando Temperatura: {temperatura} °C")
display.scroll("Temperatura", delay=300)
display.show(f"{int(temperatura)} C") # Muestra el valor numérico en el display
except Exception as e:
print("Error leyendo el sensor DHT22:", e)
time.sleep(2)Loading
esp32-devkit-c-v4
esp32-devkit-c-v4