A personal rust firmware for the Badger 2040 W
at main 1.1 kB view raw
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}