[−][src]Crate ltr_559
This is a platform agnostic Rust driver for the Ltr559 ambient light
sensors using the embedded-hal
traits.
This driver allows you to:
- Read the measurement in lux. See:
get_lux()
. - Read the measurement in raw. See:
get_als_raw_data()
- Read the conversion status. See:
get_status()
. - Read PS Data. See:
get_ps_data()
. - Get the manufacturer ID. See:
get_manufacturer_id()
. - Get the part ID. See:
get_part_id()
. - Set ALS Enable, Gain and SW Reset. See:
set_als_contr()
. - Set PS Mode and Saturation. See:
set_ps_contr()
. - Set PS LED Pulse, DutyCycle and PeakCurrent. See:
set_ps_led()
. - Set Interrupt Persist. See:
set_interrupt_persist()
. - Set ALS Meas Rate. See:
set_als_meas_rate()
. - Set ALS Low Limit. See:
set_als_low_limit_raw()
. - Set ALS High Limit. See:
set_als_high_limit_raw()
. - Set PS Low Limit. See:
set_ps_low_limit_raw()
. - Set PS High Limit. See:
set_ps_high_limit_raw()
. - Set PS Meas Rate. See:
set_ps_meas_rate()
. - Set PS Offset. See:
set_ps_offset()
. - Set PS N Pulses. See:
set_ps_n_pulses()
. - Set Interrupt Mode and Polarity. See:
set_interrupt()
.
The devices
This driver is compatible with the device Ltr-559
Datasheets:
Usage examples (see also examples folder)
To use this driver, import this crate and an embedded_hal
implementation,
then instantiate the appropriate device.
In the following examples an instance of the device will be created.
Ltr559::new_device(...)
.
Create a driver instance for the Ltr559
extern crate linux_embedded_hal as hal; extern crate ltr_559; use ltr_559::{Ltr559, SlaveAddr}; let dev = hal::I2cdev::new("/dev/i2c-1").unwrap(); let address = SlaveAddr::default(); let sensor = Ltr559::new_device(dev, address);
Read lux
extern crate linux_embedded_hal as hal; #[macro_use] extern crate nb; extern crate ltr_559; use ltr_559::{Ltr559, SlaveAddr, AlsGain, AlsIntTime, AlsMeasRate}; let dev = hal::I2cdev::new("/dev/i2c-1").unwrap(); let address = SlaveAddr::default(); let mut sensor = Ltr559::new_device(dev, address); sensor .set_als_meas_rate(AlsIntTime::_50ms, AlsMeasRate::_50ms) .unwrap(); sensor.set_als_contr(AlsGain::Gain4x, false, true).unwrap(); loop { let status = sensor.get_status().unwrap(); if status.als_data_valid { let (lux_raw_0, lux_raw_1) = sensor.get_als_raw_data().unwrap(); let lux = sensor.get_lux().unwrap(); println!( "Raw Lux CH1: 0x{:04x}, CH0: 0x{:04x} Lux = {}, Status.als_data_valid = {}", lux_raw_0, lux_raw_1, lux, status.als_data_valid ); } }
Set the integration time and manual lux range
extern crate linux_embedded_hal as hal; extern crate ltr_559; use ltr_559::{AlsIntTime, AlsMeasRate, AlsGain, Ltr559, SlaveAddr}; let dev = hal::I2cdev::new("/dev/i2c-1").unwrap(); let address = SlaveAddr::default(); let mut sensor = Ltr559::new_device(dev, address); sensor.set_als_meas_rate(AlsIntTime::_400ms, AlsMeasRate::_1000ms).unwrap(); sensor.set_als_contr(AlsGain::Gain48x, false, true).unwrap();
Configure interrupts
extern crate linux_embedded_hal as hal; #[macro_use] extern crate nb; extern crate ltr_559; use ltr_559::{ InterruptMode, InterruptPinPolarity, Ltr559, SlaveAddr, AlsPersist, PsPersist, }; let dev = hal::I2cdev::new("/dev/i2c-1").unwrap(); let address = SlaveAddr::default(); let mut sensor = Ltr559::new_device(dev, address); sensor.set_interrupt(InterruptPinPolarity::High, InterruptMode::Both).unwrap(); sensor.set_interrupt_persist(AlsPersist::_4v, PsPersist::_5v).unwrap(); sensor.set_als_low_limit_raw(1000).unwrap(); sensor.set_als_high_limit_raw(15000).unwrap(); loop { let status = sensor.get_status().unwrap(); println!("status {:?}", status); }
Re-exports
pub use crate::types::AlsGain; |
pub use crate::types::AlsIntTime; |
pub use crate::types::AlsMeasRate; |
pub use crate::types::AlsPersist; |
pub use crate::types::InterruptMode; |
pub use crate::types::LedCurrent; |
pub use crate::types::LedDutyCycle; |
pub use crate::types::LedPulse; |
pub use crate::types::PsMeasRate; |
pub use crate::types::PsPersist; |
Modules
types | Types used in LTR |
Structs
Ltr559 | Ltr559 device driver |
Status | Conversion status |
Enums
Error | Errors in this crate |
InterruptPinPolarity | Interrupt pin polarity (active state) |
ModeChangeError | Error type for mode changes. |
SlaveAddr | Possible slave addresses |