from hx711 import HX711
from utime import sleep_us
from machine import Timer
class Scales(HX711):
def __init__(self, d_out, pd_sck):
super(Scales, self).__init__(d_out, pd_sck)
self.offset = 0
def reset(self):
self.power_off()
self.power_on()
def tare(self):
self.offset = self.read()
def raw_value(self):
return self.read() - self.offset
def stable_value(self, reads=10, delay_us=500):
values = []
for _ in range(reads):
values.append(self.raw_value())
sleep_us(delay_us)
if values[0] == 0:
return values[0]
return self._stabilizer(values)
@staticmethod
def _stabilizer(values, deviation=10):
weights = []
for prev in values:
weights.append(sum([1 for current in values if abs(prev - current) / (prev / 100) <= deviation]))
return sorted(zip(values, weights), key=lambda x: x[1]).pop()[0]
timer = Timer()
def ukurMassa(timer):
val = scales.stable_value()
print('masssa :')
print(val*2.314814)
scales = Scales(d_out=2, pd_sck=3)
scales.tare()
timer.init(freq=2.5, mode=Timer.PERIODIC, callback=ukurMassa)