diff --git a/Software/MainBoard/rust/src/hal/water.rs b/Software/MainBoard/rust/src/hal/water.rs index 2c3065e..bdbb3b7 100644 --- a/Software/MainBoard/rust/src/hal/water.rs +++ b/Software/MainBoard/rust/src/hal/water.rs @@ -2,7 +2,7 @@ use crate::bail; use crate::fat_error::FatError; use crate::hal::{ADC1, TANK_MULTI_SAMPLE}; use embassy_time::Timer; -use esp_hal::analog::adc::{Adc, AdcConfig, AdcPin, Attenuation}; +use esp_hal::analog::adc::{Adc, AdcCalLine, AdcConfig, AdcPin, Attenuation}; use esp_hal::delay::Delay; use esp_hal::gpio::{Flex, Input, Output, OutputConfig, Pull}; use esp_hal::pcnt::channel::CtrlMode::Keep; @@ -17,7 +17,7 @@ pub struct TankSensor<'a> { one_wire_bus: OneWire>, tank_channel: Adc<'a, ADC1<'a>, Blocking>, tank_power: Output<'a>, - tank_pin: AdcPin, ADC1<'a>>, + tank_pin: AdcPin, ADC1<'a>, AdcCalLine>>, flow_counter: Unit<'a, 1>, } @@ -33,7 +33,7 @@ impl<'a> TankSensor<'a> { one_wire_pin.apply_output_config(&OutputConfig::default().with_pull(Pull::None)); let mut adc1_config = AdcConfig::new(); - let tank_pin = adc1_config.enable_pin(gpio5, Attenuation::_11dB); + let tank_pin = adc1_config.enable_pin_with_cal::<_, AdcCalLine<_>>(gpio5, Attenuation::_11dB); let tank_channel = Adc::new(adc1, adc1_config); let one_wire_bus = OneWire::new(one_wire_pin, false); @@ -146,8 +146,7 @@ impl<'a> TankSensor<'a> { self.tank_power.set_low(); store.sort(); - //TODO probably wrong? check! - let median_mv = store[6] as f32 * 3300_f32 / 4096_f32; - Ok(median_mv) + let median_mv = store[TANK_MULTI_SAMPLE / 2] as f32; + Ok(median_mv/1000.0) } }