Struct bme280_multibus::Bme280
source · [−]pub struct Bme280<B> { /* private fields */ }Expand description
BME280 driver.
Implementations
sourceimpl<SPI, CS, SpiError, PinError> Bme280<Bme280Bus<SPI, CS>> where
SPI: Transfer<u8, Error = SpiError> + Write<u8, Error = SpiError>,
CS: OutputPin<Error = PinError>,
impl<SPI, CS, SpiError, PinError> Bme280<Bme280Bus<SPI, CS>> where
SPI: Transfer<u8, Error = SpiError> + Write<u8, Error = SpiError>,
CS: OutputPin<Error = PinError>,
sourcepub fn from_spi(spi: SPI, cs: CS) -> Result<Self, Error<SpiError, PinError>>
pub fn from_spi(spi: SPI, cs: CS) -> Result<Self, Error<SpiError, PinError>>
Creates a new Bme280 driver from a SPI peripheral and a chip select
digital I/O pin.
Safety
The chip select pin must be high before being passed to this function.
Example
use bme280_multibus::Bme280;
use embedded_hal::digital::v2::OutputPin;
pin.set_high()?;
let mut bme: Bme280<_> = Bme280::from_spi(spi, pin)?;sourceimpl<B, E> Bme280<B> where
B: Bme280Bus<Error = E>,
impl<B, E> Bme280<B> where
B: Bme280Bus<Error = E>,
sourcepub fn new(bus: B) -> Result<Self, E>
pub fn new(bus: B) -> Result<Self, E>
Create a new BME280 from a spi::Bme280Bus or
a i2c::Bme280Bus.
Example
use bme280_multibus::{
i2c::{Address, Bme280Bus},
Bme280,
};
let mut bus: Bme280Bus<_> = Bme280Bus::new(i2c, Address::SdoGnd);
let bme: Bme280<_> = Bme280::new(bus)?;sourcepub fn chip_id(&mut self) -> Result<u8, E>
pub fn chip_id(&mut self) -> Result<u8, E>
BME280 chip ID.
The return value is a constant, CHIP_ID.
This register is useful as a sanity check to ensure communications are working with the BME280.
Example
use bme280_multibus::{i2c::Address, Bme280, CHIP_ID};
let mut bme: Bme280<_> = Bme280::from_i2c(i2c, Address::SdoGnd)?;
let chip_id: u8 = bme.chip_id()?;
assert_eq!(chip_id, CHIP_ID);sourcepub fn reset(&mut self) -> Result<(), E>
pub fn reset(&mut self) -> Result<(), E>
Reset the BME280.
Example
use bme280_multibus::{i2c::Address, Bme280};
let mut bme: Bme280<_> = Bme280::from_i2c(i2c, Address::SdoGnd)?;
bme.reset()?;sourcepub fn status(&mut self) -> Result<Status, E>
pub fn status(&mut self) -> Result<Status, E>
Get the status of the device.
Example
Check if a conversion is running.
use bme280_multibus::{i2c::Address, Bme280, Status};
let mut bme: Bme280<_> = Bme280::from_i2c(i2c, Address::SdoGnd)?;
let status: Status = bme.status()?;sourcepub fn settings(&mut self, settings: &Settings) -> Result<(), E>
pub fn settings(&mut self, settings: &Settings) -> Result<(), E>
Configure the BME280 settings.
Example
use bme280_multibus::{
i2c::Address, Bme280, Config, CtrlMeas, Filter, Mode, Oversampling, Settings, Standby,
};
const SETTINGS: Settings = Settings {
config: Config::reset()
.set_standby_time(Standby::Millis1000)
.set_filter(Filter::X16),
ctrl_meas: CtrlMeas::reset()
.set_osrs_t(Oversampling::X8)
.set_osrs_p(Oversampling::X8)
.set_mode(Mode::Normal),
ctrl_hum: Oversampling::X8,
};
let mut bme: Bme280<_> = Bme280::from_i2c(i2c, Address::SdoGnd)?;
bme.settings(&SETTINGS)?;sourcepub fn sample(&mut self) -> Result<Sample, Error<E>>
pub fn sample(&mut self) -> Result<Sample, Error<E>>
Read a sample from the BME280.
Example
use bme280_multibus::{i2c::Address, Bme280, Sample, Standby};
const SETTINGS: bme280_multibus::Settings = bme280_multibus::Settings {
config: bme280_multibus::Config::reset()
.set_standby_time(bme280_multibus::Standby::Millis1000)
.set_filter(bme280_multibus::Filter::X16),
ctrl_meas: bme280_multibus::CtrlMeas::reset()
.set_osrs_t(bme280_multibus::Oversampling::X8)
.set_osrs_p(bme280_multibus::Oversampling::X8)
.set_mode(bme280_multibus::Mode::Normal),
ctrl_hum: bme280_multibus::Oversampling::X8,
};
let mut bme: Bme280<_> = Bme280::from_i2c(i2c, Address::SdoGnd)?;
bme.settings(&SETTINGS)?;
let sample: Sample = bme.sample().unwrap();Trait Implementations
Auto Trait Implementations
impl<B> RefUnwindSafe for Bme280<B> where
B: RefUnwindSafe,
impl<B> Send for Bme280<B> where
B: Send,
impl<B> Sync for Bme280<B> where
B: Sync,
impl<B> Unpin for Bme280<B> where
B: Unpin,
impl<B> UnwindSafe for Bme280<B> where
B: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more