rp: generalize adc inputs from pins to channels
this lets us treat pins and the temperature sensor uniformly using the same interface. uniformity in turn lets us add more adc features without combinatorial explosion of methods and types needed to handle them all.
This commit is contained in:
@ -7,7 +7,7 @@
|
||||
|
||||
use defmt::*;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::adc::{Adc, Config, InterruptHandler, Pin};
|
||||
use embassy_rp::adc::{Adc, Channel, Config, InterruptHandler};
|
||||
use embassy_rp::bind_interrupts;
|
||||
use embassy_rp::gpio::Pull;
|
||||
use embassy_time::{Duration, Timer};
|
||||
@ -22,9 +22,10 @@ async fn main(_spawner: Spawner) {
|
||||
let p = embassy_rp::init(Default::default());
|
||||
let mut adc = Adc::new(p.ADC, Irqs, Config::default());
|
||||
|
||||
let mut p26 = Pin::new(p.PIN_26, Pull::None);
|
||||
let mut p27 = Pin::new(p.PIN_27, Pull::None);
|
||||
let mut p28 = Pin::new(p.PIN_28, Pull::None);
|
||||
let mut p26 = Channel::new_pin(p.PIN_26, Pull::None);
|
||||
let mut p27 = Channel::new_pin(p.PIN_27, Pull::None);
|
||||
let mut p28 = Channel::new_pin(p.PIN_28, Pull::None);
|
||||
let mut ts = Channel::new_sensor(p.ADC_TEMP_SENSOR);
|
||||
|
||||
loop {
|
||||
let level = adc.read(&mut p26).await.unwrap();
|
||||
@ -33,7 +34,7 @@ async fn main(_spawner: Spawner) {
|
||||
info!("Pin 27 ADC: {}", level);
|
||||
let level = adc.read(&mut p28).await.unwrap();
|
||||
info!("Pin 28 ADC: {}", level);
|
||||
let temp = adc.read_temperature().await.unwrap();
|
||||
let temp = adc.read(&mut ts).await.unwrap();
|
||||
info!("Temp: {} degrees", convert_to_celsius(temp));
|
||||
Timer::after(Duration::from_secs(1)).await;
|
||||
}
|
||||
|
Reference in New Issue
Block a user