|#-------------------------------------------------------------------------------
# Practica -Presion, Temperatura y Humedad
#
# Practica creada y editada por: Equipo 7
# Aguilar Garrido Anibal zs20015554
# Cordova Dominguez jocselyn Xitlali zs20015651
# Hernandez Perez Josue Guadalupe zs20015604
# Xalapa, Veracruz, México
# 2023 - Septiembre - 6
from machine import Pin, SoftI2C, Timer, ADC
import dht
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
# Configuración de la pantalla LCD I2C
I2C_ADDR = 0x27
totalRows = 4
totalColumns = 20
# Configuración de pines I2C
scl_pin = Pin(22)
sda_pin = Pin(21)
i2c = SoftI2C(scl=scl_pin, sda=sda_pin, freq=400000)
lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns)
# Muestra las palabras "Temperatura", "Presion" y "Humedad" en la pantalla
lcd.move_to(0, 0) # Primera línea, primera columna
lcd.putstr("Temperatura:")
lcd.move_to(0, 1) # Segunda línea, primera columna
lcd.putstr("Humedad:")
lcd.move_to(0, 2) # Tercera línea, primera columna
lcd.putstr("Presion:")
# Creación de un objeto DHT22
dht22 = dht.DHT22(Pin(4))
# Creación de un objeto ADC para leer el valor del potenciómetro
potentiometer = ADC(Pin(36))
# Variables para almacenar las últimas lecturas de temperatura y humedad
last_temperature = 0.0
last_humidity = 0.0
# Función para actualizar las variables de temperatura y humedad
def update_sensor_values(event):
dht22.measure()
# Función para mostrar los valores actuales en la pantalla LCD
def display_values(event):
global last_temperature, last_humidity
# Obtén las últimas lecturas de temperatura y humedad
temperature = dht22.temperature()
humidity = dht22.humidity()
# Obtiene el valor del potenciómetro
pressure = potentiometer.read()
# Borra y posiciona el cursor en las variables
lcd.move_to(12, 0) # Primera línea, columna 12
lcd.putstr("{:.1f}C".format(temperature))
lcd.move_to(9, 1) # Segunda línea, columna 9
lcd.putstr("{:.1f}%".format(humidity))
lcd.move_to(8, 2) # Tercera línea, columna 8
lcd.putstr("{:.1f}".format(pressure))
# Actualiza las últimas lecturas
last_temperature = temperature
last_humidity = humidity
# Crea un temporizador para actualizar las variables cada segundo
update_timer = Timer(1)
update_timer.init(period=1000, mode=Timer.PERIODIC, callback=update_sensor_values)
# Crea un temporizador para mostrar los valores en la pantalla cada segundo
display_timer = Timer(2)
display_timer.init(period=1000, mode=Timer.PERIODIC, callback=display_values)
# Llama a la función para mostrar los valores iniciales
display_values(None)