Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1from hx711 import HX711 

2from sensor import Sensor 

3 

4 

5class Scale(Sensor): 

6 

7 """Scale, measures a weight """ 

8 

9 offset = 0 

10 

11 def __init__(self, pin_sck, pin_out_dt, range_min=0, range_max=1000000, average_converging_speed=1 / 2, 

12 val_to_g_conversion=1220): 

13 

14 """ constructor. 

15 :param pin_sck: number pin Serial Clock Input. it has to be output, es pin32 on ESP32 

16 :param pin_out_dt: number pin that will read data value, is has to be GPIO 

17 :param range_min: min value of sensor (empty), used for percentage 

18 :param range_max: max value of sensor (full), used for percentage 

19 :param average_converging_speed: speed the average goes towards the last measure (range 0-1) 

20 :param val_to_g_conversion: to convert signal to grams (signal/val = g)""" 

21 super().__init__(range_min, range_max, average_converging_speed) 

22 # machine.freq(160000000) is this really necessary? it cause some problem 

23 self.driver = HX711(d_out=pin_out_dt, pd_sck=pin_sck) 

24 # channel can be set with: self.driver.channel = HX711.CHANNEL_A_64 

25 self.val_to_g_conversion = val_to_g_conversion 

26 

27 def __str__(self): 

28 """prints the object.""" 

29 return "Scale: average: {}, last measure {}, percentage: {}, weight: {}".format(self.get_average(), 

30 self.get_last_measure(), 

31 self.get_percentage(), 

32 self.weight()) 

33 

34 def raw_value(self): 

35 """Measures sensor, returns raw value, not tared.""" 

36 return self.driver.read() 

37 

38 def tare(self): 

39 """tares sensor at empty scale.""" 

40 self.offset = self.driver.read() 

41 

42 def raw_measure(self): 

43 """returns sensor raw measure with tare (raw value - offset).""" 

44 return self.driver.read() - self.offset 

45 

46 def weight(self): 

47 """actual weight in grams.""" 

48 self.measure() 

49 return self.get_last_measure() / self.val_to_g_conversion 

50 

51 def weight_kg(self): 

52 """actual weight in kilograms.""" 

53 return self.weight() / 1000