import time
import sys
EMULATE_HX711 = False
referenceUnit = 1
if not EMULATE_HX711:
from machine import Pin
from hx711 import HX711
else:
from emulated_hx711 import HX711
def cleanAndExit():
print("Cleaning...")
if not EMULATE_HX711:
# Realizar limpieza de pines en MicroPython
hx.dt_pin(5, Pin.IN)
hx.sck_pin(6, Pin.IN)
print("Bye!")
sys.exit()
hx = HX711(5, 6)
# He descubierto que, por alguna razón, el orden de los bytes no siempre es el mismo entre las versiones de Python, NumPy y el HX711 en sí.
# Aún necesito averiguar por qué cambia.
# Si estás experimentando valores superaleatorios, cambia estos valores a MSB o LSB hasta obtener valores más estables.
# Hay un código a continuación para depurar y registrar el orden de los bits y los bytes.
# El primer parámetro es el orden en el que se utilizan los bytes para construir el valor "long".
# El segundo parámetro es el orden de los bits dentro de cada byte.
# Según la hoja de datos del HX711, el segundo parámetro es MSB, por lo que no deberías necesitar modificarlo.
hx.set_reading_format("MSB", "MSB")
# CÓMO CALCULAR LA UNIDAD DE REFERENCIA
# Para establecer la unidad de referencia en 1, coloca 1 kg en tu sensor o cualquier cosa que tengas y sepas exactamente cuánto pesa.
# En este caso, 92 es 1 gramo porque, con 1 como unidad de referencia, obtuve números cercanos a 0 sin peso alguno
# y obtuve números alrededor de 184000 cuando agregué 2 kg. Por lo tanto, según la regla de los tercios:
# Si 2000 gramos son 184000, entonces 1000 gramos son 184000 / 2000 = 92.
#hx.set_reference_unit(113)
hx.set_reference_unit(referenceUnit)
hx.reset()
hx.tare()
print("Tare done! Add weight now...")
while True:
try:
# Estas tres líneas son útiles para depurar si se debe usar MSB o LSB en los formatos de lectura
# para el primer parámetro de "hx.set_reading_format("LSB", "MSB")".
# Comenta las dos líneas "val = hx.get_weight(5)" y "print(val)" y descomenta estas tres líneas para ver qué imprime.
# np_arr8_string = hx.get_np_arr8_string()
# binary_string = hx.get_binary_string()
# print(binary_string + " " + np_arr8_string)
# Imprime el peso. Comenta si estás depurando el problema de MSB y LSB.
val = hx.get_weight(5)
print(val)
hx.power_down()
hx.power_up()
time.sleep(0.1)
except (KeyboardInterrupt, SystemExit):
cleanAndExit()