57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
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 |