Newer
Older
use embedded_hal::adc::OneShot;
use rp2040_hal::{
adc::AdcPin,
gpio::{
bank0::{Gpio26, Gpio28},
FunctionNull, Pin, PullNone,
},
Adc,
};
// u16, 3.3V ADC, resistor half-divider
const FACTOR: f64 = 3.3 * 2.0 / 4095.0;
type Batt = Pin<Gpio26, FunctionNull, PullNone>;
type Usb = Pin<Gpio28, FunctionNull, PullNone>;
pub fn new(adc: Adc, batt: Batt, usb: Usb) -> Self {
let batt = AdcPin::new(batt);
let usb = AdcPin::new(usb);
Self { batt, usb, adc }
}
pub fn voltage(&mut self) -> (f64, f64) {
let batt: u16 = self.adc.read(&mut self.batt).unwrap();
let usb: u16 = self.adc.read(&mut self.usb).unwrap();
(batt as f64 * FACTOR, usb as f64 * FACTOR)
}
}