# ♡ ∩_∩
# („• ֊ •„)♡
# | ̄U U ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
# | • Lenguajes de Interfaz en TECNM Campus ITT |
# | • Autor: Alejandro Suarez Sandoval |
# | • Fecha: 2025/05/21 |
# | • Descripción: Mostrando temperatura y humedad en pantalla LCD e I2C |
# | con una Raspberry Pi Pico W. |
# | • Link simulación en Wokwi: https://wokwi.com/projects/431560890004787201 |
#  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
#
# ⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂⠁⠁⠂⠄⠄⠂ ⠂⠄⠄⠂☆
# ═════════•°• Código en lenguaje MicroPython Raspberry Pi Pico•°•═══════
from machine import I2C, Pin
from time import sleep
from dht import DHT22
from pico_i2c_lcd import I2cLcd
# Crea el objeto DHT22 conectado al pin GP15
dht = DHT22(Pin(15))
# Inicializa el bus I2C en el canal 0, con SCL en GP5 y SDA en GP4, a 100 kHz
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=100000)
# Escanea el bus I2C para obtener la dirección del dispositivo (pantalla LCD)
I2C_ADDR = i2c.scan()[0]
# Crea un objeto LCD especificando el I2C, dirección del dispositivo, 2 filas y 16 columnas
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
# Bucle principal
while True:
dht.measure() # Solicita una nueva medición al sensor DHT22
temp = dht.temperature() # Obtiene la temperatura (°C)
hum = dht.humidity() # Obtiene la humedad (%)
# Imprime los datos por consola (útil para depuración)
print("Temperatura: {}°C Humedad: {:.0f}% ".format(temp, hum))
lcd.clear() # Limpia la pantalla
lcd.putstr('Temp: ' + str(temp) + " C") # Muestra la temperatura en la primera línea
lcd.move_to(0, 1) # Mueve el cursor a la segunda línea
lcd.putstr('Hum: ' + str(hum) + "%") # Muestra la humedad en la segunda línea
sleep(2) # Espera 2 segundos antes de la próxima lectura