A personal rust firmware for the Badger 2040 W
1use crate::I2c0Bus;
2use crate::badge_display::{HUMIDITY, TEMP};
3use defmt::*;
4use embassy_embedded_hal::shared_bus::blocking::i2c::I2cDevice;
5use embassy_time::Timer;
6use shtcx::{self, PowerMode};
7
8#[embassy_executor::task]
9pub async fn run_the_temp_sensor(i2c_bus: &'static I2c0Bus) {
10 let i2c_dev = I2cDevice::new(i2c_bus);
11
12 let mut sht = shtcx::shtc3(i2c_dev);
13 let mut sht_delay = embassy_time::Delay; // Create a delay instance
14
15 loop {
16 let combined = sht.measure(PowerMode::NormalMode, &mut sht_delay).unwrap();
17 let celsius = combined.temperature.as_degrees_celsius();
18 let fahrenheit = (celsius * 9.0 / 5.0) + 32.0;
19 info!(
20 "Temperature: {}°F, Humidity: {}%",
21 fahrenheit,
22 combined.humidity.as_percent()
23 );
24 TEMP.store(fahrenheit as u8, core::sync::atomic::Ordering::Relaxed);
25 HUMIDITY.store(
26 combined.humidity.as_percent() as u8,
27 core::sync::atomic::Ordering::Relaxed,
28 );
29 Timer::after_secs(30).await;
30 }
31}