From 849a0e174fa1601236050afb72290174675c585f Mon Sep 17 00:00:00 2001 From: Aaron Tsui Date: Tue, 20 Dec 2022 09:11:39 +0800 Subject: [PATCH 1/2] add convert_to_celsius function in the adc module modify RP2040 adc example to get inside biased bipolar diode voltage, then convert this temperature sensor data into Celsius degree, according to chapter 4.9.5. Temperature Sensor in RP2040 datasheet. --- examples/rp/src/bin/adc.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/examples/rp/src/bin/adc.rs b/examples/rp/src/bin/adc.rs index 2a9e9373..25e5126b 100644 --- a/examples/rp/src/bin/adc.rs +++ b/examples/rp/src/bin/adc.rs @@ -27,7 +27,12 @@ async fn main(_spawner: Spawner) { let level = adc.read(&mut p28).await; info!("Pin 28 ADC: {}", level); let temp = adc.read_temperature().await; - info!("Temp: {}", temp); + info!("Temp: {} degrees", convert_to_celsius(temp)); Timer::after(Duration::from_secs(1)).await; } } + +fn convert_to_celsius(raw_temp: u16) -> f32 { + // According to chapter 4.9.5. Temperature Sensor in RP2040 datasheet + 27.0 - (raw_temp as f32 * 3.3 / 4096.0 -0.706)/0.001721 as f32 +} \ No newline at end of file From 5ae91ed3b64a086b15a949477a5762a3876307c5 Mon Sep 17 00:00:00 2001 From: Aaron Tsui Date: Tue, 20 Dec 2022 14:59:49 +0800 Subject: [PATCH 2/2] cargo fmt --- examples/rp/src/bin/adc.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/rp/src/bin/adc.rs b/examples/rp/src/bin/adc.rs index 25e5126b..4202fd39 100644 --- a/examples/rp/src/bin/adc.rs +++ b/examples/rp/src/bin/adc.rs @@ -34,5 +34,5 @@ async fn main(_spawner: Spawner) { fn convert_to_celsius(raw_temp: u16) -> f32 { // According to chapter 4.9.5. Temperature Sensor in RP2040 datasheet - 27.0 - (raw_temp as f32 * 3.3 / 4096.0 -0.706)/0.001721 as f32 -} \ No newline at end of file + 27.0 - (raw_temp as f32 * 3.3 / 4096.0 - 0.706) / 0.001721 as f32 +}