from machine import Pin, ADC import time from hx710b import HX710B class Sensors: def __init__(self): self.hx = HX710B(dout_pin=0, sck_pin=1) print("Using calibration:", self.hx.zero_offset, self.hx.scale_factor) self.pressure = 0.0 self.tank_full_kpa = 13.72 self.tank_full = False self.tank_percent = 0.0 self.tare_btn = Pin(9, Pin.IN, Pin.PULL_UP) self._tare_lock = False self.test_pin0 = Pin(20, Pin.OUT) # Green self.test_pin1 = Pin(21, Pin.OUT) # Blue self.test_pin2 = Pin(22, Pin.OUT) self.cpu_adc = ADC(4) def read_pressure(self): #self.test_pin2.on() self.pressure = self.hx.read_kpa() #self.test_pin2.off() return self.pressure def read_pressure_avg(self, alpha=0.2): new = self.hx.read_kpa() if not hasattr(self, "pressure"): self.pressure = new else: self.pressure = (alpha * new) + ((1 - alpha) * self.pressure) return self.pressure def set_tank_full(self): self.tank_full_kpa = self.pressure self.tank_full = True self.tank_percent = 100.0 print("Tank FULL set at", self.tank_full_kpa) def check_buttons(self): if self.tare_btn.value() == 0 and not self._tare_lock: self._tare_lock = True time.sleep_ms(200) self.set_tank_full() elif self.tare_btn.value() == 1: self._tare_lock = False def cpu_temp(self): v = self.cpu_adc.read_u16() * 3.3 / 65535 return 27 - (v - 0.706) / 0.001721