# Importar las bibliotecas necesarias
import machine
from machine import Pin, I2C
import dht
import time
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
# Definir constantes
DHT_PIN = 4 # Pin de datos DHT22 conectado a GPIO4
POT_PIN = 34 # Potenciómetro conectado a GPIO34
I2C_SCL_PIN = 22 # Pin SCL I2C conectado a GPIO22
I2C_SDA_PIN = 21 # Pin SDA I2C conectado a GPIO21
LCD_ADDRESS = 0x27 # Dirección I2C de la LCD
LCD_WIDTH = 20 # Número de columnas de la LCD
LCD_LINES = 4 # Número de líneas de la LCD
# Inicializar sensor DHT22
dht22 = dht.DHT22(Pin(DHT_PIN))
# Inicializar interfaz I2C
i2c = I2C(scl=Pin(I2C_SCL_PIN), sda=Pin(I2C_SDA_PIN))
# Inicializar LCD
lcd = I2cLcd(i2c, LCD_ADDRESS, LCD_LINES, LCD_WIDTH)
# Inicializar ADC para el potenciómetro
adc = machine.ADC(Pin(POT_PIN))
adc.atten(machine.ADC.ATTN_11DB) # Rango completo: 3.3v
# Función para leer temperatura y humedad de DHT22
def read_dht22():
dht22.measure()
return dht22.temperature(), dht22.humidity()
# Función para leer presión simulada del potenciómetro
def read_pressure():
return adc.read()
# Bucle principal
while True:
# Leer temperatura, humedad y presión
temp, hum = read_dht22()
pressure = read_pressure()
# Limpiar la LCD
lcd.clear()
# Mostrar las lecturas en la LCD
lcd.putstr(f"Aula 403 ")
lcd.putstr(f"\nTemperatura: {temp} °C")
lcd.putstr(f"\nHumedad: {hum} % ")
lcd.putstr(f"\nPresion: {pressure} ")
# Esperar 1 segundo antes de la próxima lectura
time.sleep(1)