# niveau.py - waterhoogte en volume uit de druksensor onderaan het voedingsreservoir
RHO, G = 1000.0, 9.81          # dichtheid van de oplossing (kg/m3) en valversnelling (m/s2)
VS = 5.0                       # voedingsspanning van de sensor (V)
BODEM = 0.60 * 0.40            # binnenoppervlakte van het reservoir (m2)


def niveau(ruw):
    u = ruw * VS / 1023                   # ADC-waarde (0 tot 1023) naar volt
    p = (u / VS - 0.04) / 0.09 * 1000     # datasheet: druk in kPa; maal 1000 geeft Pa
    h = p / (RHO * G)                     # hydrostatische druk: p = rho * g * h
    return u, p, h, h * BODEM * 1000      # volt, Pa, m, liter


for ruw in (41, 86, 154, 222, 267):
    u, p, h, liter = niveau(ruw)
    print(f"ADC {ruw:4d}   {u:5.3f} V   {p:6.0f} Pa   {h * 100:5.1f} cm   {liter:5.1f} L")
