Crate lm73

source ·
Expand description

This is a platform agnostic Rust driver for the lm73 temperature sensor and thermal watchdog, based on the embedded-hal traits.

This driver allows you to:

  • Enable/disable the device.
  • Read the temperature.
  • Set the OS temperature.
  • Set the OS operation mode.

The device

The lm73 temperature sensor includes a delta-sigma analog-to-digital converter, and a digital overtemperature detector. The host can query the lm73 through its I2C interface to read temperature at any time.

Datasheet:

Usage examples (see also examples folder)

To use this driver, import this crate and an embedded_hal implementation, then instantiate the device.

Read temperature

extern crate linux_embedded_hal as hal;
extern crate lm73;

use hal::I2cdev;
use lm73::{ Lm73, SlaveAddr };

let dev = I2cdev::new("/dev/i2c-1").unwrap();
let address = SlaveAddr::default();
let mut sensor = Lm73::new(dev, address);
let temp_celsius = sensor.read_temperature().unwrap();
println!("Temperature: {}ºC", temp_celsius);

Provide an alternative address

extern crate linux_embedded_hal as hal;
extern crate lm73;

use hal::I2cdev;
use lm73::{ Lm73, SlaveAddr };

let dev = I2cdev::new("/dev/i2c-1").unwrap();
let (a2, a1, a0) = (false, false, true);
let address = SlaveAddr::Alternative(a2, a1, a0);
let mut sensor = Lm73::new(dev, address);

Set the OneShot operation mode

extern crate linux_embedded_hal as hal;
extern crate lm73;

use hal::I2cdev;
use lm73::{ Lm73, SlaveAddr, OsMode };

let dev = I2cdev::new("/dev/i2c-1").unwrap();
let mut sensor = Lm73::new(dev, SlaveAddr::default());
sensor.set_os_mode(OsMode::Enabled).unwrap();

Set the HIGH_TEMP temperature

extern crate linux_embedded_hal as hal;
extern crate lm73;

use hal::I2cdev;
use lm73::{ Lm73, SlaveAddr };

let dev = I2cdev::new("/dev/i2c-1").unwrap();
let mut sensor = Lm73::new(dev, SlaveAddr::default());
let temp_celsius = 50.0;
sensor.set_temperature_high(temp_celsius).unwrap();

Enable / disable the sensor

extern crate linux_embedded_hal as hal;
extern crate lm73;

use hal::I2cdev;
use lm73::{ Lm73, SlaveAddr };

let dev = I2cdev::new("/dev/i2c-1").unwrap();
let mut sensor = Lm73::new(dev, SlaveAddr::default());
sensor.disable().unwrap(); // shutdown
sensor.enable().unwrap();

Structs

Lm73 device driver.

Enums

Alert Enable operation mode
All possible errors in this crate
OneShot operation mode
OS polarity
Resolution of temperature
Possible slave addresses