import machine
import time
from machine import Pin
from time import sleep_us,sleep
from hx711 import HX711
#Objeto para manejo de báscula
platoCroquetas = HX711 (19,18,1)
#Pines utilizados
echo1=Pin(35,Pin.IN)
trig1=Pin(32,Pin.OUT)
echo2=Pin(34,Pin.IN)
trig2=Pin(33,Pin.OUT)
#variables globales
agua = 0.0
croquetasTanque = 0.0
croquetasPlato = 0.0
medida = 0.0
banderaCalibrar = False
banderaConfigurar = False
medidaIdealCroquetaPlato = 0.0
medidaIdealCroquetaTanque = 0.0
medidaIdealAgua=0.0
tiempoDeAlimentacion = 0
#Manejo de servomotores
def configurarSistema():
try:
medidaIdealCroquetaPlato = float(input("Ingresa la cantidad en gramos ideal de comida del perro:"))
medidaIdealCroquetaTanque = float(input("Ingresa la cantidad en gramos ideal del almacenamiento de respaldo del perro:"))
medidaIdealAgua = float(input("Ingresa la cantidad en litros de agua del contenedor del perro:"))
tiempoDeAlimentacion = int("Ingresa la cantidad en minutos cuando debe ser alimentado el perro")
except ValueError:
print("Ingresa números válidos para la configuración")
banderaConfigurar = False
def calibrarBalanza():
global croquetasPlato
global medida
global banderaCalibrar
platoCroquetas.power_on()
start_time = time.time()
while (platoCroquetas.is_ready()):
if time.time() - start_time > 3:
print("Timeout esperando a que HX711 esté listo para la primera lectura.")
banderaCalibrar = False
return
medida = platoCroquetas.read(False)
while (platoCroquetas.is_ready()):
if time.time() - start_time > 3:
print("Timeout esperando a que HX711 esté listo para la segunda lectura.")
banderaCalibrar = False
return
medida = platoCroquetas.read(True)
banderaCalibrar = True
def medirGramosEnPlato():
croquetasPlato = 0.0
global medida
medida = platoCroquetas.read(True)
medida = medida / 420
medida = medida / 5
croquetasPlato = 5000 * medida
return croquetasPlato
def medirNivelAgua():
trig2.value(0)
sleep_us(2)
trig2.value(1)
sleep_us(10)
trig2.value(0)
x=machine.time_pulse_us(echo2,1)
distancia=(0.034*x)/2
agua=86.59*distancia
agua=agua/1000
return agua
def medirGramosEnTanque():
trig1.value(0)
sleep_us(2)
trig1.value(1)
sleep_us(10)
trig1.value(0)
x=machine.time_pulse_us(echo1,1)
distancia=(0.034*x)/2
agua=86.59*distancia
agua=agua/1000
return agua
while True:
while banderaConfigurar == False:
while banderaCalibrar == False:
calibrarBalanza()
croquetasPlato=medirGramosEnPlato()
#print("Croquetas en el plato:",croquetasPlato,"g")
agua=medirNivelAgua()
#print('L en: bote', agua, 'L')
sleep(1)