Geen omschrijving
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sensors.rs 1021B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. use bme280::spi::BME280;
  2. use embedded_hal::digital::v2::OutputPin;
  3. use mkl25z4_hal::time::CopyableMonoTimer;
  4. use super::pins::{BME280Pins, DisplayBmeSpi};
  5. pub fn bme280(
  6. mut pins: BME280Pins,
  7. spi: DisplayBmeSpi,
  8. delay: CopyableMonoTimer,
  9. ) -> (BME280Pins, DisplayBmeSpi, BME280Data) {
  10. // Enable power.
  11. pins.pwr.set_low().ok();
  12. // Read the sensor.
  13. let mut bme = BME280::new(spi, pins.cs, delay).unwrap();
  14. bme.init().unwrap();
  15. let values = bme.measure().unwrap();
  16. let (spi, cs, _) = bme.destroy();
  17. // Disable power again.
  18. pins.pwr.set_high().ok();
  19. (
  20. BME280Pins {
  21. pwr: pins.pwr,
  22. cs: cs,
  23. },
  24. spi,
  25. BME280Data {
  26. temperature: (values.temperature * 10.0) as i32,
  27. humidity: (values.humidity * 100.0) as u32,
  28. pressure: values.pressure as u32,
  29. },
  30. )
  31. }
  32. #[derive(Clone, Copy)]
  33. pub struct BME280Data {
  34. pub temperature: i32,
  35. pub humidity: u32,
  36. pub pressure: u32,
  37. }