Adafruit MLX90614 Arduino Library
Adafruit_MLX90614.h
1 /***************************************************
2  This is a library for the MLX90614 Temp Sensor
3 
4  Designed specifically to work with the MLX90614 sensors in the
5  adafruit shop
6  ----> https://www.adafruit.com/products/1747 (3V)
7  ----> https://www.adafruit.com/products/1748 (5V)
8 
9  These sensors use I2C to communicate, 2 pins are required to
10  interface
11  Adafruit invests time and resources providing this open source code,
12  please support Adafruit and open-source hardware by purchasing
13  products from Adafruit!
14 
15  Written by Limor Fried/Ladyada for Adafruit in any redistribution
16  ****************************************************/
17 
18 #include <Adafruit_I2CDevice.h>
19 #include <Arduino.h>
20 
21 #define MLX90614_I2CADDR 0x5A
22 
23 // RAM
24 #define MLX90614_RAWIR1 0x04
25 #define MLX90614_RAWIR2 0x05
26 #define MLX90614_TA 0x06
27 #define MLX90614_TOBJ1 0x07
28 #define MLX90614_TOBJ2 0x08
29 // EEPROM
30 #define MLX90614_TOMAX 0x20
31 #define MLX90614_TOMIN 0x21
32 #define MLX90614_PWMCTRL 0x22
33 #define MLX90614_TARANGE 0x23
34 #define MLX90614_EMISS 0x24
35 #define MLX90614_CONFIG 0x25
36 #define MLX90614_ADDR 0x2E
37 #define MLX90614_ID1 0x3C
38 #define MLX90614_ID2 0x3D
39 #define MLX90614_ID3 0x3E
40 #define MLX90614_ID4 0x3F
41 
47 public:
49  bool begin(uint8_t addr = MLX90614_I2CADDR, TwoWire *wire = &Wire);
50 
51  double readObjectTempC(void);
52  double readAmbientTempC(void);
53  double readObjectTempF(void);
54  double readAmbientTempF(void);
55  uint16_t readEmissivityReg(void);
56  void writeEmissivityReg(uint16_t ereg);
57  double readEmissivity(void);
58  void writeEmissivity(double emissivity);
59 
60 private:
61  Adafruit_I2CDevice *i2c_dev = NULL;
62  float readTemp(uint8_t reg);
63 
64  uint16_t read16(uint8_t addr);
65  void write16(uint8_t addr, uint16_t data);
66  byte crc8(byte *addr, byte len);
67  uint8_t _addr;
68 };
double readAmbientTempC(void)
Get the current ambient temperature in degrees Celcius.
Definition: Adafruit_MLX90614.cpp:113
void writeEmissivity(double emissivity)
Set the emissivity value.
Definition: Adafruit_MLX90614.cpp:76
double readObjectTempF(void)
Get the current temperature of an object in degrees Farenheit.
Definition: Adafruit_MLX90614.cpp:87
bool begin(uint8_t addr=MLX90614_I2CADDR, TwoWire *wire=&Wire)
Begin the I2C connection.
Definition: Adafruit_MLX90614.cpp:32
double readAmbientTempF(void)
Get the current ambient temperature in degrees Farenheit.
Definition: Adafruit_MLX90614.cpp:95
uint16_t readEmissivityReg(void)
Read the raw value from the emissivity register.
Definition: Adafruit_MLX90614.cpp:45
double readEmissivity(void)
Read the emissivity value from the sensor&#39;s register and scale.
Definition: Adafruit_MLX90614.cpp:65
Class to read from and control a MLX90614 Temp Sensor.
Definition: Adafruit_MLX90614.h:46
void writeEmissivityReg(uint16_t ereg)
Write the raw unscaled emissivity value to the emissivity register.
Definition: Adafruit_MLX90614.cpp:53
double readObjectTempC(void)
Get the current temperature of an object in degrees Celcius.
Definition: Adafruit_MLX90614.cpp:104