import time
import machine
import dht
from I2c_lcd import I2cLcd
direccio_lcd = 0x27
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=400000)
rele1 = machine.Pin(13, machine.Pin.OUT) #Amarillo
rele2 = machine.Pin(12, machine.Pin.OUT) #Azul
pin_dades = machine.Pin(23)
sensor = dht.DHT22(pin_dades)
# connect scl to GPIO 22, sda to GPIO 21
lcd = I2cLcd(i2c, direccio_lcd, 2, 16)
def testLcd(fila1, fila2):
lcd.move_to(0,0)
lcd.putstr(fila1)
lcd.move_to(0,1)
lcd.putstr(fila2)
llindar_temp = 25
llindar_wet = 40
# Funció per a calcular el màxim d'una lectura:
def maxim(llista):
valor_maxim = llista[0]
for element in llista:
if element > valor_maxim:
valor_maxim = element
return valor_maxim
# Funció per a calcular el mínim d'una lectura
def minim(llista):
valor_minim = llista[0]
for element in llista:
if element < valor_minim:
valor_minim = element
return valor_minim
# Funció per a realitzar la mitjana de les lectures obtingudes
def mitjana(llista):
suma = 0
for element in llista:
suma = suma + element
return suma / len(llista)
lectures = 0
temperatures = []
humitats = []
while True:
# Fem la mesura de les temperatures i humitats:
sensor.measure()
# Assignem cada dada llegida a una variable, així com el temps transcorregut:
temperatura = sensor.temperature()
humitat = sensor.humidity()
# Fem les llistes amb les dades obtingudes del sensor:
temperatures.append(temperatura)
humitats.append(humitat)
lectures += 1
# Calculem les dades cada 12 lectures / 1 minut:
if lectures % 12 == 0:
temp_mitjana = mitjana(temperatures)
humitat_mitjana = mitjana(humitats)
if temp_mitjana > llindar_temp:
rele1.value(1)
else:
rele1.value(0)
if humitat_mitjana > llindar_wet:
rele2.value(1)
else:
rele2.value(0)
print(f"La temperatura mitjana és de: {temp_mitjana:.2f}ºC")
print(f"La temperatura màxima és de: {temp_max}ºC")
print(f"La temperatura mínima és de: {temp_min}ºC")
print(f"La humitat mitjana és del {humitat_mitjana:.2f}%")
print(f"La humitat màxima és del {humi_max}%")
print(f"La humitat mínima és del {humi_min}%")
if len(Historial) == 60:
Historial = []
temperatures = []
humitats = []
lectures = 0
print("Reiniciant")
time.sleep(0.5) # Espera 5 segons entre lectures
testLcd(str(25),str(10))