feat: 优化 ADC 采样逻辑。
This commit is contained in:
parent
3eb680f1ce
commit
de84c85190
17
src/main.rs
17
src/main.rs
@ -49,21 +49,6 @@ fn main() {
|
|||||||
beep.play();
|
beep.play();
|
||||||
});
|
});
|
||||||
|
|
||||||
// thread::spawn(move || {
|
|
||||||
// let mut dc_out_ctl = dc_out_controller::DcOutController::new(
|
|
||||||
// dc_out_ctl_pin
|
|
||||||
// .into_output()
|
|
||||||
// .expect("Failed to set GPIO2 as output"),
|
|
||||||
// );
|
|
||||||
// loop {
|
|
||||||
// if dc_out_ctl.state {
|
|
||||||
// dc_out_ctl.off().expect("Failed to turn DC_OUT_CTL off");
|
|
||||||
// } else {
|
|
||||||
// dc_out_ctl.on().expect("Failed to turn DC_OUT_CTL on");
|
|
||||||
// }
|
|
||||||
// thread::sleep(Duration::from_millis(500));
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
let mut dc_out_ctl = dc_out_controller::DcOutController::new(
|
let mut dc_out_ctl = dc_out_controller::DcOutController::new(
|
||||||
dc_out_ctl_pin
|
dc_out_ctl_pin
|
||||||
.into_output()
|
.into_output()
|
||||||
@ -78,7 +63,5 @@ fn main() {
|
|||||||
).expect("Failed to create manager");
|
).expect("Failed to create manager");
|
||||||
loop {
|
loop {
|
||||||
manager.handling_once().expect("Failed to handle once");
|
manager.handling_once().expect("Failed to handle once");
|
||||||
println!("Hello, world!");
|
|
||||||
thread::sleep(Duration::from_millis(2000));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
|
use std::{thread, time::Duration};
|
||||||
|
|
||||||
use embedded_hal::digital::blocking::OutputPin;
|
use embedded_hal::digital::blocking::OutputPin;
|
||||||
use embedded_hal_0_2::{adc::OneShot, digital::v2::InputPin};
|
use embedded_hal_0_2::{adc::OneShot, digital::v2::InputPin};
|
||||||
use esp_idf_hal::{
|
use esp_idf_hal::{
|
||||||
adc::{Adc, Atten11dB, PoweredAdc, ADC1},
|
adc::{Adc, Atten11dB, PoweredAdc, ADC1},
|
||||||
gpio::{Gpio1, Gpio2},
|
gpio::{Gpio1, Gpio2}, delay,
|
||||||
};
|
};
|
||||||
use esp_idf_sys::EspError;
|
use esp_idf_sys::EspError;
|
||||||
|
|
||||||
@ -47,25 +49,23 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_adapter_voltage(&mut self) -> Result<f32, EspError> {
|
pub fn get_adapter_voltage(&mut self) -> Result<f32, EspError> {
|
||||||
let mut voltage = 0.0;
|
return Ok(self.adc.read(&mut self.adapter_pin).unwrap() as f32);
|
||||||
for _ in 0..10 {
|
|
||||||
voltage += self.adc.read(&mut self.adapter_pin).unwrap() as f32;
|
|
||||||
}
|
|
||||||
voltage /= 10.0;
|
|
||||||
return Ok(voltage);
|
|
||||||
}
|
}
|
||||||
pub fn get_battery_voltage(&mut self) -> Result<f32, EspError> {
|
pub fn get_battery_voltage(&mut self) -> Result<f32, EspError> {
|
||||||
let mut voltage = 0.0;
|
return Ok(self.adc.read(&mut self.battery_pin).unwrap() as f32);
|
||||||
for _ in 0..10 {
|
|
||||||
voltage += self.adc.read(&mut self.battery_pin).unwrap() as f32;
|
|
||||||
}
|
|
||||||
voltage /= 10.0;
|
|
||||||
return Ok(voltage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handling_once(&mut self) -> Result<(), EspError> {
|
pub fn handling_once(&mut self) -> Result<(), EspError> {
|
||||||
let adapter = self.get_adapter_voltage()?;
|
let mut adapter = 0.0_f32;
|
||||||
let battery = self.get_battery_voltage()?;
|
let mut battery = 0.0_f32;
|
||||||
|
for _ in 0..10 {
|
||||||
|
adapter += self.get_adapter_voltage()?;
|
||||||
|
battery += self.get_battery_voltage()?;
|
||||||
|
thread::sleep(Duration::from_millis(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
adapter /= 10.0_f32;
|
||||||
|
battery /= 10.0_f32;
|
||||||
|
|
||||||
if adapter < 1000.0 {
|
if adapter < 1000.0 {
|
||||||
self.dc_out_controller.off().expect("Can not turn off Out");
|
self.dc_out_controller.off().expect("Can not turn off Out");
|
||||||
|
Loading…
Reference in New Issue
Block a user