Expand description
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§
Enums§
- Error
- Errors in this crate
- Interrupt
PinPolarity - Interrupt pin polarity (active state)
- Mode
Change Error - Error type for mode changes.
- Slave
Addr - Possible slave addresses