Single and Dual Zone Infra Red Thermometer
MLX90614.h@4:c5344a5f3266, 2017-12-26 (annotated)
- Committer:
- mcm
- Date:
- Tue Dec 26 11:14:36 2017 +0000
- Revision:
- 4:c5344a5f3266
- Parent:
- 3:6a5b6fcff28e
The driver was completed and tested, it works as expected. It was tested using the NUCLEO-L152RE.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mcm | 1:df258d25fd8a | 1 | /** |
mcm | 1:df258d25fd8a | 2 | * @brief MLX90614.h |
mcm | 1:df258d25fd8a | 3 | * @details Single and Dual Zone Infra Red Thermometer. |
mcm | 1:df258d25fd8a | 4 | * Header file. |
mcm | 1:df258d25fd8a | 5 | * |
mcm | 1:df258d25fd8a | 6 | * |
mcm | 1:df258d25fd8a | 7 | * @return NA |
mcm | 1:df258d25fd8a | 8 | * |
mcm | 1:df258d25fd8a | 9 | * @author Manuel Caballero |
mcm | 1:df258d25fd8a | 10 | * @date 26/December/2017 |
mcm | 1:df258d25fd8a | 11 | * @version 26/December/2017 The ORIGIN |
mcm | 1:df258d25fd8a | 12 | * @pre NaN. |
mcm | 1:df258d25fd8a | 13 | * @warning NaN |
mcm | 1:df258d25fd8a | 14 | * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). |
mcm | 1:df258d25fd8a | 15 | */ |
mcm | 1:df258d25fd8a | 16 | #ifndef MLX90614_H |
mcm | 1:df258d25fd8a | 17 | #define MLX90614_H |
mcm | 1:df258d25fd8a | 18 | |
mcm | 1:df258d25fd8a | 19 | #include "mbed.h" |
mcm | 1:df258d25fd8a | 20 | |
mcm | 1:df258d25fd8a | 21 | |
mcm | 1:df258d25fd8a | 22 | /** |
mcm | 1:df258d25fd8a | 23 | Example: |
mcm | 1:df258d25fd8a | 24 | |
mcm | 3:6a5b6fcff28e | 25 | #include "mbed.h" |
mcm | 3:6a5b6fcff28e | 26 | #include "MLX90614.h" |
mcm | 3:6a5b6fcff28e | 27 | |
mcm | 3:6a5b6fcff28e | 28 | MLX90614 myMLX90614 ( I2C_SDA, I2C_SCL, MLX90614::MLX90614_ADDRESS, 100000 ); |
mcm | 3:6a5b6fcff28e | 29 | Serial pc ( USBTX, USBRX ); |
mcm | 3:6a5b6fcff28e | 30 | |
mcm | 3:6a5b6fcff28e | 31 | Ticker newReading; |
mcm | 3:6a5b6fcff28e | 32 | DigitalOut myled(LED1); |
mcm | 3:6a5b6fcff28e | 33 | |
mcm | 3:6a5b6fcff28e | 34 | MLX90614::MLX90614_status_t aux; |
mcm | 3:6a5b6fcff28e | 35 | MLX90614::MLX90614_vector_data_t myMLX90614Data; |
mcm | 3:6a5b6fcff28e | 36 | uint8_t myState = 0; |
mcm | 3:6a5b6fcff28e | 37 | |
mcm | 3:6a5b6fcff28e | 38 | |
mcm | 3:6a5b6fcff28e | 39 | void changeDATA ( void ) |
mcm | 3:6a5b6fcff28e | 40 | { |
mcm | 3:6a5b6fcff28e | 41 | myState = 1; |
mcm | 3:6a5b6fcff28e | 42 | } |
mcm | 3:6a5b6fcff28e | 43 | |
mcm | 3:6a5b6fcff28e | 44 | |
mcm | 3:6a5b6fcff28e | 45 | int main() |
mcm | 3:6a5b6fcff28e | 46 | { |
mcm | 3:6a5b6fcff28e | 47 | pc.baud ( 115200 ); |
mcm | 3:6a5b6fcff28e | 48 | |
mcm | 3:6a5b6fcff28e | 49 | // Get the IDs |
mcm | 3:6a5b6fcff28e | 50 | aux = myMLX90614.MLX90614_GetID_Numbers ( &myMLX90614Data ); |
mcm | 3:6a5b6fcff28e | 51 | pc.printf( "ID_0: %d\nID_1: %d\nID_2: %d\nID_3: %d\r\n", myMLX90614Data.ID[0], myMLX90614Data.ID[1], myMLX90614Data.ID[2], myMLX90614Data.ID[3] ); |
mcm | 3:6a5b6fcff28e | 52 | |
mcm | 3:6a5b6fcff28e | 53 | newReading.attach( &changeDATA, 1 ); // the address of the function to be attached ( changeDATA ) and the interval ( 1s ) |
mcm | 3:6a5b6fcff28e | 54 | |
mcm | 3:6a5b6fcff28e | 55 | // Let the callbacks take care of everything |
mcm | 3:6a5b6fcff28e | 56 | while(1) { |
mcm | 3:6a5b6fcff28e | 57 | sleep(); |
mcm | 3:6a5b6fcff28e | 58 | |
mcm | 3:6a5b6fcff28e | 59 | myled = 1; |
mcm | 3:6a5b6fcff28e | 60 | |
mcm | 3:6a5b6fcff28e | 61 | if ( myState == 1 ) { |
mcm | 3:6a5b6fcff28e | 62 | // Get the data |
mcm | 3:6a5b6fcff28e | 63 | aux = myMLX90614.MLX90614_ReadTA ( &myMLX90614Data ); |
mcm | 3:6a5b6fcff28e | 64 | aux = myMLX90614.MLX90614_ReadTObj1 ( &myMLX90614Data ); |
mcm | 3:6a5b6fcff28e | 65 | |
mcm | 3:6a5b6fcff28e | 66 | pc.printf( "Ta: %0.2fC\nTObj1: %0.2fC\r\n", myMLX90614Data.TA, myMLX90614Data.TObj1 ); |
mcm | 3:6a5b6fcff28e | 67 | |
mcm | 3:6a5b6fcff28e | 68 | myState = 0; // Reset the variable |
mcm | 3:6a5b6fcff28e | 69 | } |
mcm | 3:6a5b6fcff28e | 70 | |
mcm | 3:6a5b6fcff28e | 71 | myled = 0; |
mcm | 3:6a5b6fcff28e | 72 | } |
mcm | 3:6a5b6fcff28e | 73 | } |
mcm | 1:df258d25fd8a | 74 | */ |
mcm | 1:df258d25fd8a | 75 | |
mcm | 1:df258d25fd8a | 76 | |
mcm | 1:df258d25fd8a | 77 | /*! |
mcm | 1:df258d25fd8a | 78 | Library for the MLX90614 Single and Dual Zone Infra Red Thermometer. |
mcm | 1:df258d25fd8a | 79 | */ |
mcm | 1:df258d25fd8a | 80 | class MLX90614 |
mcm | 1:df258d25fd8a | 81 | { |
mcm | 1:df258d25fd8a | 82 | public: |
mcm | 1:df258d25fd8a | 83 | /** |
mcm | 1:df258d25fd8a | 84 | * @brief DEFAULT ADDRESSES |
mcm | 1:df258d25fd8a | 85 | */ |
mcm | 1:df258d25fd8a | 86 | typedef enum { |
mcm | 1:df258d25fd8a | 87 | MLX90614_ADDRESS = ( 0x5A << 1 ) /*!< MLX90614 I2C Address */ |
mcm | 1:df258d25fd8a | 88 | } MLX90614_address_t; |
mcm | 1:df258d25fd8a | 89 | |
mcm | 1:df258d25fd8a | 90 | |
mcm | 1:df258d25fd8a | 91 | // COMMANDS |
mcm | 1:df258d25fd8a | 92 | /** |
mcm | 1:df258d25fd8a | 93 | * @brief COMMANDS |
mcm | 1:df258d25fd8a | 94 | */ |
mcm | 1:df258d25fd8a | 95 | typedef enum { |
mcm | 1:df258d25fd8a | 96 | MLX90614_RAM_ACCESS = 0b00011111, /*!< Seconds. RANGE 00-59 */ |
mcm | 1:df258d25fd8a | 97 | MLX90614_EEPROM_ACCESS = 0b00100000, /*!< LSB of Temp */ |
mcm | 1:df258d25fd8a | 98 | MLX90614_FLAGS = 0b11110000, /*!< LSB of Temp */ |
mcm | 1:df258d25fd8a | 99 | MLX90614_SLEEP = 0b11111111 /*!< LSB of Temp */ |
mcm | 1:df258d25fd8a | 100 | } MLX90614_command_t; |
mcm | 1:df258d25fd8a | 101 | |
mcm | 1:df258d25fd8a | 102 | |
mcm | 1:df258d25fd8a | 103 | // REGISTERS |
mcm | 1:df258d25fd8a | 104 | /** |
mcm | 1:df258d25fd8a | 105 | * @brief EEPROM REGISTERS |
mcm | 1:df258d25fd8a | 106 | */ |
mcm | 1:df258d25fd8a | 107 | typedef enum { |
mcm | 1:df258d25fd8a | 108 | MLX90614_TO_MAX = ( MLX90614_EEPROM_ACCESS | 0x00 ), /*!< To max */ |
mcm | 1:df258d25fd8a | 109 | MLX90614_TO_MIN = ( MLX90614_EEPROM_ACCESS | 0x01 ), /*!< To min */ |
mcm | 1:df258d25fd8a | 110 | MLX90614_PWMCTRL = ( MLX90614_EEPROM_ACCESS | 0x02 ), /*!< PWMCTRL */ |
mcm | 1:df258d25fd8a | 111 | MLX90614_TA_RANGE = ( MLX90614_EEPROM_ACCESS | 0x03 ), /*!< Ta range */ |
mcm | 1:df258d25fd8a | 112 | MLX90614_EMISSIVITY_CORRECTION_COEFFICIENT = ( MLX90614_EEPROM_ACCESS | 0x04 ), /*!< Emissivity correction coefficient */ |
mcm | 1:df258d25fd8a | 113 | MLX90614_CONFIG_REGISTER_1 = ( MLX90614_EEPROM_ACCESS | 0x05 ), /*!< Config Register1 */ |
mcm | 1:df258d25fd8a | 114 | MLX90614_SMBUS_ADDRESS = ( MLX90614_EEPROM_ACCESS | 0x0E ), /*!< SMBus address (LSByte only) */ |
mcm | 1:df258d25fd8a | 115 | MLX90614_ID_NUMBER_0 = ( MLX90614_EEPROM_ACCESS | 0x0C ), /*!< ID number */ |
mcm | 1:df258d25fd8a | 116 | MLX90614_ID_NUMBER_1 = ( MLX90614_EEPROM_ACCESS | 0x0D ), /*!< ID number */ |
mcm | 1:df258d25fd8a | 117 | MLX90614_ID_NUMBER_2 = ( MLX90614_EEPROM_ACCESS | 0x0E ), /*!< ID number */ |
mcm | 1:df258d25fd8a | 118 | MLX90614_ID_NUMBER_3 = ( MLX90614_EEPROM_ACCESS | 0x0F ) /*!< ID number */ |
mcm | 1:df258d25fd8a | 119 | } MLX90614_eeprom_registers_t; |
mcm | 1:df258d25fd8a | 120 | |
mcm | 1:df258d25fd8a | 121 | |
mcm | 1:df258d25fd8a | 122 | /** |
mcm | 1:df258d25fd8a | 123 | * @brief RAM REGISTERS |
mcm | 1:df258d25fd8a | 124 | */ |
mcm | 1:df258d25fd8a | 125 | typedef enum { |
mcm | 1:df258d25fd8a | 126 | MLX90614_RAW_DATA_IR_CHANNEL_1 = ( MLX90614_RAM_ACCESS & 0x04 ), /*!< Raw data IR channel 1 */ |
mcm | 1:df258d25fd8a | 127 | MLX90614_RAW_DATA_IR_CHANNEL_2 = ( MLX90614_RAM_ACCESS & 0x05 ), /*!< Raw data IR channel 2 */ |
mcm | 1:df258d25fd8a | 128 | MLX90614_TA = ( MLX90614_RAM_ACCESS & 0x06 ), /*!< TA */ |
mcm | 1:df258d25fd8a | 129 | MLX90614_TOBJ_1 = ( MLX90614_RAM_ACCESS & 0x07 ), /*!< TOBJ 1 */ |
mcm | 1:df258d25fd8a | 130 | MLX90614_TOBJ_2 = ( MLX90614_RAM_ACCESS & 0x08 ) /*!< TOBJ 2 */ |
mcm | 1:df258d25fd8a | 131 | } MLX90614_ram_registers_t; |
mcm | 1:df258d25fd8a | 132 | |
mcm | 1:df258d25fd8a | 133 | |
mcm | 1:df258d25fd8a | 134 | |
mcm | 1:df258d25fd8a | 135 | // COMMANDS |
mcm | 1:df258d25fd8a | 136 | /** |
mcm | 1:df258d25fd8a | 137 | * @brief FLAGS |
mcm | 1:df258d25fd8a | 138 | */ |
mcm | 1:df258d25fd8a | 139 | typedef enum { |
mcm | 1:df258d25fd8a | 140 | FLAG_EEBUSY_HIGH = ( 1 << 7 ), /*!< The previous write/erase EEPROM access is still in progress. High active */ |
mcm | 1:df258d25fd8a | 141 | FLAG_EEBUSY_LOW = ( 0 << 7 ), /*!< The previous write/erase EEPROM access is still in progress. LOW */ |
mcm | 1:df258d25fd8a | 142 | FLAG_EE_DEAD_HIGH = ( 1 << 5 ), /*!< EEPROM double error has occurred. High active */ |
mcm | 1:df258d25fd8a | 143 | FLAG_EE_DEAD_LOW = ( 0 << 5 ), /*!< EEPROM double error has occurred. LOW */ |
mcm | 1:df258d25fd8a | 144 | FLAG_INIT_LOW = ( 0 << 4 ), /*!< POR initialization routine is still ongoing. Low active */ |
mcm | 1:df258d25fd8a | 145 | FLAG_INIT_HIGH = ( 1 << 4 ) /*!< POR initialization routine is still ongoing. HIGH */ |
mcm | 1:df258d25fd8a | 146 | } MLX90614_flags_t; |
mcm | 1:df258d25fd8a | 147 | |
mcm | 1:df258d25fd8a | 148 | |
mcm | 1:df258d25fd8a | 149 | /** |
mcm | 1:df258d25fd8a | 150 | * @brief CONFIG REGISTER 1 |
mcm | 1:df258d25fd8a | 151 | */ |
mcm | 1:df258d25fd8a | 152 | // IIR |
mcm | 1:df258d25fd8a | 153 | typedef enum { |
mcm | 1:df258d25fd8a | 154 | CONFIGREG1_IIR_MASK = ( 7 << 0 ), /*!< IIR Mask */ |
mcm | 1:df258d25fd8a | 155 | CONFIGREG1_IIR_100 = ( 4 << 0 ), /*!< IIR (100%) a1=1, b1=0 */ |
mcm | 1:df258d25fd8a | 156 | CONFIGREG1_IIR_80 = ( 5 << 0 ), /*!< IIR (80%) a1=0.8, b1=0.2 */ |
mcm | 1:df258d25fd8a | 157 | CONFIGREG1_IIR_67 = ( 6 << 0 ), /*!< IIR (67%) a1=0.666, b1=0.333 */ |
mcm | 1:df258d25fd8a | 158 | CONFIGREG1_IIR_57 = ( 7 << 0 ), /*!< IIR (57%) a1=0.571, b1=0.428 */ |
mcm | 1:df258d25fd8a | 159 | CONFIGREG1_IIR_50 = ( 0 << 0 ), /*!< IIR (50%) a1=0.5, b1=0.5 */ |
mcm | 1:df258d25fd8a | 160 | CONFIGREG1_IIR_25 = ( 1 << 0 ), /*!< IIR (25%) a1=0.25, b1=0.75 */ |
mcm | 1:df258d25fd8a | 161 | CONFIGREG1_IIR_17 = ( 2 << 0 ), /*!< IIR (17%) a1=0.166(6), b1=0.83(3) */ |
mcm | 1:df258d25fd8a | 162 | CONFIGREG1_IIR_13 = ( 3 << 0 ) /*!< IIR (13%) a1=0.125, b1=0.875 */ |
mcm | 1:df258d25fd8a | 163 | } MLX90614_configregister1_iir_t; |
mcm | 1:df258d25fd8a | 164 | |
mcm | 4:c5344a5f3266 | 165 | // TEMPERATURE SOURCES |
mcm | 4:c5344a5f3266 | 166 | typedef enum { |
mcm | 4:c5344a5f3266 | 167 | CONFIGREG1_TEMP_MASK = ( 3 << 4 ), /*!< Temp Mask */ |
mcm | 4:c5344a5f3266 | 168 | CONFIGREG1_TEMP_TA_TOBJ1 = ( 0 << 4 ), /*!< Ta, Tobj1 */ |
mcm | 4:c5344a5f3266 | 169 | CONFIGREG1_TEMP_TA_TOBJ2 = ( 1 << 4 ), /*!< Ta, Tobj2 */ |
mcm | 4:c5344a5f3266 | 170 | CONFIGREG1_TEMP_TOBJ2 = ( 2 << 4 ), /*!< Tobj2 */ |
mcm | 4:c5344a5f3266 | 171 | CONFIGREG1_TEMP_TOBJ1_TOBJ2 = ( 3 << 4 ) /*!< Tobj1, Tobj2 */ |
mcm | 4:c5344a5f3266 | 172 | } MLX90614_configregister1_temp_t; |
mcm | 1:df258d25fd8a | 173 | |
mcm | 1:df258d25fd8a | 174 | |
mcm | 1:df258d25fd8a | 175 | |
mcm | 1:df258d25fd8a | 176 | |
mcm | 1:df258d25fd8a | 177 | |
mcm | 1:df258d25fd8a | 178 | #ifndef MLX90614_VECTOR_STRUCT_H |
mcm | 1:df258d25fd8a | 179 | #define MLX90614_VECTOR_STRUCT_H |
mcm | 1:df258d25fd8a | 180 | typedef struct { |
mcm | 1:df258d25fd8a | 181 | uint16_t RawTA; |
mcm | 1:df258d25fd8a | 182 | uint16_t RawTObj1; |
mcm | 1:df258d25fd8a | 183 | uint16_t RawTObj2; |
mcm | 1:df258d25fd8a | 184 | uint8_t PEC; |
mcm | 1:df258d25fd8a | 185 | |
mcm | 1:df258d25fd8a | 186 | float TA; |
mcm | 1:df258d25fd8a | 187 | float TObj1; |
mcm | 1:df258d25fd8a | 188 | float TObj2; |
mcm | 1:df258d25fd8a | 189 | |
mcm | 1:df258d25fd8a | 190 | uint16_t ID[4]; |
mcm | 1:df258d25fd8a | 191 | float Emissivity; |
mcm | 1:df258d25fd8a | 192 | MLX90614_configregister1_iir_t IIR; |
mcm | 1:df258d25fd8a | 193 | MLX90614_flags_t Flags; |
mcm | 4:c5344a5f3266 | 194 | MLX90614_configregister1_temp_t TempSource; |
mcm | 1:df258d25fd8a | 195 | } MLX90614_vector_data_t; |
mcm | 1:df258d25fd8a | 196 | #endif |
mcm | 1:df258d25fd8a | 197 | |
mcm | 1:df258d25fd8a | 198 | |
mcm | 1:df258d25fd8a | 199 | |
mcm | 1:df258d25fd8a | 200 | |
mcm | 1:df258d25fd8a | 201 | /** |
mcm | 1:df258d25fd8a | 202 | * @brief INTERNAL CONSTANTS |
mcm | 1:df258d25fd8a | 203 | */ |
mcm | 1:df258d25fd8a | 204 | #define MLX90614_KELVIN_TO_CELSIUS 273.15 |
mcm | 1:df258d25fd8a | 205 | #define MLX90614_KELVIN_CONVERSION 0.02 |
mcm | 1:df258d25fd8a | 206 | |
mcm | 1:df258d25fd8a | 207 | // MACRO: round function |
mcm | 1:df258d25fd8a | 208 | #define _MYROUND( x ) ({ \ |
mcm | 1:df258d25fd8a | 209 | uint32_t aux_pre; \ |
mcm | 1:df258d25fd8a | 210 | float aux_x; \ |
mcm | 1:df258d25fd8a | 211 | \ |
mcm | 1:df258d25fd8a | 212 | aux_x = (x); \ |
mcm | 1:df258d25fd8a | 213 | aux_pre = (x); \ |
mcm | 1:df258d25fd8a | 214 | aux_x -= aux_pre; \ |
mcm | 1:df258d25fd8a | 215 | aux_x *= 10; \ |
mcm | 1:df258d25fd8a | 216 | \ |
mcm | 1:df258d25fd8a | 217 | if ( aux_x >= 5 ) \ |
mcm | 1:df258d25fd8a | 218 | aux_pre++; \ |
mcm | 1:df258d25fd8a | 219 | \ |
mcm | 1:df258d25fd8a | 220 | aux_pre; \ |
mcm | 1:df258d25fd8a | 221 | }) |
mcm | 1:df258d25fd8a | 222 | |
mcm | 1:df258d25fd8a | 223 | |
mcm | 1:df258d25fd8a | 224 | typedef enum { |
mcm | 1:df258d25fd8a | 225 | MLX90614_SUCCESS = 0, |
mcm | 1:df258d25fd8a | 226 | MLX90614_FAILURE = 1, |
mcm | 1:df258d25fd8a | 227 | |
mcm | 1:df258d25fd8a | 228 | MLX90614_TIMEOUT = 2*65535, |
mcm | 1:df258d25fd8a | 229 | MLX90614_FLAG_ERROR = 0x8000, |
mcm | 1:df258d25fd8a | 230 | |
mcm | 1:df258d25fd8a | 231 | I2C_SUCCESS = 0, /*!< I2C communication was fine */ |
mcm | 1:df258d25fd8a | 232 | I2C_FAILURE = 1 |
mcm | 1:df258d25fd8a | 233 | } MLX90614_status_t; |
mcm | 1:df258d25fd8a | 234 | |
mcm | 1:df258d25fd8a | 235 | |
mcm | 1:df258d25fd8a | 236 | |
mcm | 1:df258d25fd8a | 237 | |
mcm | 1:df258d25fd8a | 238 | |
mcm | 1:df258d25fd8a | 239 | /** Create an MLX90614 object connected to the specified I2C pins. |
mcm | 1:df258d25fd8a | 240 | * |
mcm | 1:df258d25fd8a | 241 | * @param sda I2C data pin |
mcm | 1:df258d25fd8a | 242 | * @param scl I2C clock pin |
mcm | 1:df258d25fd8a | 243 | * @param addr I2C slave address |
mcm | 1:df258d25fd8a | 244 | * @param freq I2C frequency in Hz. |
mcm | 1:df258d25fd8a | 245 | */ |
mcm | 1:df258d25fd8a | 246 | MLX90614 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); |
mcm | 1:df258d25fd8a | 247 | |
mcm | 1:df258d25fd8a | 248 | /** Delete MLX90614 object. |
mcm | 1:df258d25fd8a | 249 | */ |
mcm | 1:df258d25fd8a | 250 | ~MLX90614(); |
mcm | 1:df258d25fd8a | 251 | |
mcm | 1:df258d25fd8a | 252 | /** It gets the ID numbers. |
mcm | 1:df258d25fd8a | 253 | */ |
mcm | 3:6a5b6fcff28e | 254 | MLX90614_status_t MLX90614_GetID_Numbers ( MLX90614_vector_data_t* myID ); |
mcm | 1:df258d25fd8a | 255 | |
mcm | 1:df258d25fd8a | 256 | /** It reads the raw ambient temperature. |
mcm | 1:df258d25fd8a | 257 | */ |
mcm | 3:6a5b6fcff28e | 258 | MLX90614_status_t MLX90614_ReadRawTA ( MLX90614_vector_data_t* myRawTA ); |
mcm | 1:df258d25fd8a | 259 | |
mcm | 1:df258d25fd8a | 260 | /** It reads the ambient temperature in Celsius degrees. |
mcm | 1:df258d25fd8a | 261 | */ |
mcm | 3:6a5b6fcff28e | 262 | MLX90614_status_t MLX90614_ReadTA ( MLX90614_vector_data_t* myTA ); |
mcm | 1:df258d25fd8a | 263 | |
mcm | 1:df258d25fd8a | 264 | /** It reads the raw object 1 temperature. |
mcm | 1:df258d25fd8a | 265 | */ |
mcm | 3:6a5b6fcff28e | 266 | MLX90614_status_t MLX90614_ReadRawTObj1 ( MLX90614_vector_data_t* myRawTObj1 ); |
mcm | 1:df258d25fd8a | 267 | |
mcm | 1:df258d25fd8a | 268 | /** It reads the object 1 temperature. |
mcm | 1:df258d25fd8a | 269 | */ |
mcm | 3:6a5b6fcff28e | 270 | MLX90614_status_t MLX90614_ReadTObj1 ( MLX90614_vector_data_t* myObj1 ); |
mcm | 1:df258d25fd8a | 271 | |
mcm | 1:df258d25fd8a | 272 | /** It reads the raw object 2 temperature. |
mcm | 1:df258d25fd8a | 273 | */ |
mcm | 3:6a5b6fcff28e | 274 | MLX90614_status_t MLX90614_ReadRawTObj2 ( MLX90614_vector_data_t* myRawTObj2 ); |
mcm | 1:df258d25fd8a | 275 | |
mcm | 1:df258d25fd8a | 276 | /** It reads the object 2 temperature. |
mcm | 1:df258d25fd8a | 277 | */ |
mcm | 3:6a5b6fcff28e | 278 | MLX90614_status_t MLX90614_ReadTObj2 ( MLX90614_vector_data_t* myObj2 ); |
mcm | 1:df258d25fd8a | 279 | |
mcm | 1:df258d25fd8a | 280 | /** It gets the Emissivity correction coefficient. |
mcm | 1:df258d25fd8a | 281 | */ |
mcm | 3:6a5b6fcff28e | 282 | MLX90614_status_t MLX90614_GetEmissivity ( MLX90614_vector_data_t* myEmissivity ); |
mcm | 1:df258d25fd8a | 283 | |
mcm | 1:df258d25fd8a | 284 | /** It sets the Emissivity correction coefficient. |
mcm | 1:df258d25fd8a | 285 | */ |
mcm | 3:6a5b6fcff28e | 286 | MLX90614_status_t MLX90614_SetEmissivity ( MLX90614_vector_data_t myEmissivity ); |
mcm | 1:df258d25fd8a | 287 | |
mcm | 1:df258d25fd8a | 288 | /** It gets the IIR. |
mcm | 1:df258d25fd8a | 289 | */ |
mcm | 3:6a5b6fcff28e | 290 | MLX90614_status_t MLX90614_GetIIR ( MLX90614_vector_data_t* myIIR ); |
mcm | 1:df258d25fd8a | 291 | |
mcm | 1:df258d25fd8a | 292 | /** It sets the IIR. |
mcm | 1:df258d25fd8a | 293 | */ |
mcm | 3:6a5b6fcff28e | 294 | MLX90614_status_t MLX90614_SetIIR ( MLX90614_configregister1_iir_t myIIR ); |
mcm | 3:6a5b6fcff28e | 295 | |
mcm | 3:6a5b6fcff28e | 296 | /** It gets the Temperature Source. |
mcm | 3:6a5b6fcff28e | 297 | */ |
mcm | 3:6a5b6fcff28e | 298 | MLX90614_status_t MLX90614_GetTemperatureSource ( MLX90614_vector_data_t* myTempSource ); |
mcm | 3:6a5b6fcff28e | 299 | |
mcm | 3:6a5b6fcff28e | 300 | /** It sets the Temperature Source. |
mcm | 3:6a5b6fcff28e | 301 | */ |
mcm | 3:6a5b6fcff28e | 302 | MLX90614_status_t MLX90614_SetTemperatureSource ( MLX90614_configregister1_temp_t myTempSource ); |
mcm | 1:df258d25fd8a | 303 | |
mcm | 1:df258d25fd8a | 304 | /** It gets the FLAGS. |
mcm | 1:df258d25fd8a | 305 | */ |
mcm | 3:6a5b6fcff28e | 306 | MLX90614_status_t MLX90614_GetFLAGS ( MLX90614_vector_data_t* myFlags ); |
mcm | 1:df258d25fd8a | 307 | |
mcm | 1:df258d25fd8a | 308 | |
mcm | 1:df258d25fd8a | 309 | |
mcm | 1:df258d25fd8a | 310 | |
mcm | 1:df258d25fd8a | 311 | private: |
mcm | 1:df258d25fd8a | 312 | I2C _i2c; |
mcm | 1:df258d25fd8a | 313 | uint32_t _MLX90614_Addr; |
mcm | 1:df258d25fd8a | 314 | }; |
mcm | 1:df258d25fd8a | 315 | |
mcm | 1:df258d25fd8a | 316 | #endif |