# LM92 Module
| Since  | Origin / Contributor  | Maintainer  | Source  |
| :----- | :-------------------- | :---------- | :------ |
| 2015-05-17 | [Levente Tamas](https://github.com/elgarbe) | [Levente Tamas](https://github.com/elgarbe) | [lm92.lua](../../lua_modules/lm92/lm92.lua) |

This Lua module provides access to [LM92](http://www.ti.com/lit/ds/symlink/lm92.pdf) I²C ±0.33C 12bit+sign temperature sensor.

!!! note
	This module requires `i2c` C module built into firmware.

### Require
```lua
lm92 = require("lm92")
```

### Release
```lua
lm92 = nil
package.loaded["lm92"] = nil
```

## lm92.setup()
Function used to setup the address for lm92.

#### Syntax
`lm92.setup(address)`

#### Parameters
- `address`: I²C address used by LM92. Depends on the connection of `A0` and `A1` pins. Can be either `0x48`, `0x49`, `0x4a` or `0x4b` according to page 9 of [LM92 datasheet](http://www.ti.com/lit/ds/symlink/lm92.pdf)

#### Returns
`nil`

#### Example
```lua
lm92 = require("lm92")
sda = 3 -- GPIO 0
scl = 4 -- GPIO 2
addr = 0x48
i2c.setup(0, sda, scl, i2c.SLOW)  -- call i2c.setup() only once
lm92.setup(addr)
```

## lm92.getTemperature()
Returns the temperature register's content.

#### Syntax
`lm92.getTemperature()`

#### Parameters
None

#### Returns
Temperature in degree Celsius.

## lm92.shutdown()
Makes the chip enter the low power shutdown mode.

#### Syntax
`lm92.shutdown()`

#### Parameters
None

#### Returns
`nil`

## lm92.wakeup()
Makes the chip exit the low power shutdown mode.

#### Syntax
`lm92.wakeup()`

#### Parameters
None

#### Returns
`nil`

## lm92.setThyst()

Set hysteresis Temperature.

#### Syntax
`lm92.setThyst(htemp)`

#### Parameters
- `htemp`: Hysteresis temperature from 130 to -55 in ºC

#### Returns
`nil`

## lm92.setTcrit()
Set Critical Temperature.

#### Syntax
`lm92.setTcrit(ctemp)`

#### Parameters
`ctemp`: Critical temperature from 130 to -55 in ºC

#### Returns
`nil`

## lm92.setTlow()
Set Low Window Temperature.

#### Syntax
`lm92.setTlow(lwtemp)`

####Parameters
- `lwtemp`:  Low window temperature from 130 to -55 in ºC

#### Returns
`nil`

## lm92.setThigh()
Set High Window Temperature.

#### Syntax
`lm92.setThigh(hwtemp)`

#### Parameters
- `hwtemp`: High window temperature from 130 to -55 in ºC

#### Returns
`nil`

## lm92.getThyst()
Get hysteresis Temperature.

#### Syntax
`lm92.getThyst()`

#### Parameters
None

#### Returns
Hysteresis Temperature in degree Celsius.

## lm92.getTcrit()
Get Critical Temperature.

#### Syntax
`lm92.getTcrit()`

#### Parameters
None

#### Returns
Critical Temperature in degree Celsius.

## lm92.getTlow()
Get Low Window Temperature.

#### Syntax
`lm92.getTlow()`

#### Parameters
None

#### Returns
Low Window Temperature in degree Celsius.

## lm92.getThigh()
Get High Window Temperature.

#### Syntax
`lm92.getThigh()`

#### Parameters
None

#### Returns
High Window Temperature in degree Celsius.

#### Example
```lua
--node.compile("lm92.lua")
lm92 = require("lm92")
sda = 3 -- GPIO 0
scl = 4 -- GPIO 2
addr = 0x48
i2c.setup(0, sda, scl, i2c.SLOW)  -- call i2c.setup() only once
lm92.setup(addr)

t = lm92.getTemperature()
print("Got temperature: "..t.." C")

--Seting comparison temperatures
lm92.setThyst(3)
lm92.setTcrit(40.75)
lm92.setTlow(28.5)
lm92.setThigh(31.625)

t = lm92.getThyst()
print("Got hyster: "..t.." C")
t = lm92.getTcrit()
print("Got Crit: "..t.." C")
t = lm92.getTlow()
print("Got Low: "..t.." C")
t = lm92.getThigh()
print("Got High: "..t.." C")
```

#### TODO:
- add full support of the features, including interrupt and critical alert support