diff options
| author | pennae <[email protected]> | 2023-07-21 21:31:44 +0200 |
|---|---|---|
| committer | pennae <[email protected]> | 2023-08-01 18:31:28 +0200 |
| commit | b166ed6b78db0737005a65c1e444ce7563de7da3 (patch) | |
| tree | b06b0742ceb839e5739e92ea4c001617eb2f5d8c /examples | |
| parent | 54d31c98fe44533c955c494ea58dd16810367c4f (diff) | |
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.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/rp/src/bin/adc.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/examples/rp/src/bin/adc.rs b/examples/rp/src/bin/adc.rs index 81a8b8340..c58695512 100644 --- a/examples/rp/src/bin/adc.rs +++ b/examples/rp/src/bin/adc.rs | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | use defmt::*; | 8 | use defmt::*; |
| 9 | use embassy_executor::Spawner; | 9 | use embassy_executor::Spawner; |
| 10 | use embassy_rp::adc::{Adc, Config, InterruptHandler, Pin}; | 10 | use embassy_rp::adc::{Adc, Channel, Config, InterruptHandler}; |
| 11 | use embassy_rp::bind_interrupts; | 11 | use embassy_rp::bind_interrupts; |
| 12 | use embassy_rp::gpio::Pull; | 12 | use embassy_rp::gpio::Pull; |
| 13 | use embassy_time::{Duration, Timer}; | 13 | use embassy_time::{Duration, Timer}; |
| @@ -22,9 +22,10 @@ async fn main(_spawner: Spawner) { | |||
| 22 | let p = embassy_rp::init(Default::default()); | 22 | let p = embassy_rp::init(Default::default()); |
| 23 | let mut adc = Adc::new(p.ADC, Irqs, Config::default()); | 23 | let mut adc = Adc::new(p.ADC, Irqs, Config::default()); |
| 24 | 24 | ||
| 25 | let mut p26 = Pin::new(p.PIN_26, Pull::None); | 25 | let mut p26 = Channel::new_pin(p.PIN_26, Pull::None); |
| 26 | let mut p27 = Pin::new(p.PIN_27, Pull::None); | 26 | let mut p27 = Channel::new_pin(p.PIN_27, Pull::None); |
| 27 | let mut p28 = Pin::new(p.PIN_28, Pull::None); | 27 | let mut p28 = Channel::new_pin(p.PIN_28, Pull::None); |
| 28 | let mut ts = Channel::new_sensor(p.ADC_TEMP_SENSOR); | ||
| 28 | 29 | ||
| 29 | loop { | 30 | loop { |
| 30 | let level = adc.read(&mut p26).await.unwrap(); | 31 | let level = adc.read(&mut p26).await.unwrap(); |
| @@ -33,7 +34,7 @@ async fn main(_spawner: Spawner) { | |||
| 33 | info!("Pin 27 ADC: {}", level); | 34 | info!("Pin 27 ADC: {}", level); |
| 34 | let level = adc.read(&mut p28).await.unwrap(); | 35 | let level = adc.read(&mut p28).await.unwrap(); |
| 35 | info!("Pin 28 ADC: {}", level); | 36 | info!("Pin 28 ADC: {}", level); |
| 36 | let temp = adc.read_temperature().await.unwrap(); | 37 | let temp = adc.read(&mut ts).await.unwrap(); |
| 37 | info!("Temp: {} degrees", convert_to_celsius(temp)); | 38 | info!("Temp: {} degrees", convert_to_celsius(temp)); |
| 38 | Timer::after(Duration::from_secs(1)).await; | 39 | Timer::after(Duration::from_secs(1)).await; |
| 39 | } | 40 | } |
