from machine import Pin
from time import sleep
import sensor
import estado
import actuadores
import temperatura
bomba_encendida = "No activada" #la bomba empieza cerrada.
ciclos_limpieza = 0
while True:
#Apertura o cierre de la bomba
nivel_agua = sensor.medir_nivel()
temperatura_agua = temperatura.medir_temperatura()
if nivel_agua < 0:
actuadores.apagar_bomba()
actuadores.cerrar_valvula()
print("Error de lectura. Se ha detenido el sistema por precaucion.")
elif nivel_agua < sensor.Nivel_Min:
bomba_encendida = "Activada" #si el nivel del agua es menor al 20% de la capacidad del tanque la bomba se enciende para llenar.
elif nivel_agua > sensor.Nivel_Max:
if bomba_encendida == "Activada":
ciclos_limpieza = ciclos_limpieza + 1
bomba_encendida = "No activada"
if bomba_encendida == "Activada":
actuadores.encender_bomba() #Se enciende la bomba para dar paso del agua al tanque
actuadores.cerrar_valvula() #se mantiene cerrrada la valvula de distribucion del agua.
else:
actuadores.apagar_bomba() #se apaga la bomba al llegar al limite maximo del tanque
actuadores.cerrar_valvula() #se mantiene cerrada la valvula de distribucion del agua.
if temperatura_agua is not None:
print(f"Temperatura del agua: {temperatura_agua:.1f} °C")
else:
print("No se detecta el sensor de temperatura.")
print(f"Nivel actual: {nivel_agua:.1f}% --- Estado de la bomba: {bomba_encendida} \n")
if ciclos_limpieza == estado.ciclos_maximo:
print("Ha cumplido los ciclos maximos. Se recomienda la limpieza del tanque.")
estado.mostrar_estado(nivel_agua)
# opcion = input("Desea abrir la valvula? (SI/NO): ").strip().upper()
# if opcion == "SI":
# actuadores.abrir_valvula()
# print("La valvula ha sido abierta...")
# else:
# actuadores.cerrar_valvula()
# print("La valvula esta cerrada.")
# sleep(2)
#Opcion para que el usuario decida si abrir la valvula de distribucion o no.
#Se comenta para que el codigo sa ejecute de manera constante con el while y no
#corte la ejecucion. Se puede simular con ambas opciones.Loading
esp32-devkit-c-v4
esp32-devkit-c-v4