I2C MLX90614 InfraRed Thermo sensor

mlx90614.cpp

Committer:
rkuo2000
Date:
2016-10-26
Revision:
1:99681219efbe
Parent:
0:0f4840f6bf23

File content as of revision 1:99681219efbe:

#include "mbed.h"
#include "mlx90614.h"

I2C  mlx90614_i2c(PD_12, PD_10); // I2C1_SDA, I2C1_SCL

void MLX90614_WriteByte(uint8_t MLX90614_reg, uint8_t MLX90614_data)
{
    char data_out[2];
    data_out[0]= MLX90614_reg;
    data_out[1]= MLX90614_data;
    mlx90614_i2c.write(MLX90614_slave_addr, data_out, 2, 0);
}

uint16_t MLX90614_ReadByte(uint8_t MLX90614_reg)
{
    char data_out[1], data_in[3];
    data_out[0] = MLX90614_reg;
    mlx90614_i2c.write(MLX90614_slave_addr, data_out, 1, 1);
    mlx90614_i2c.read(MLX90614_slave_addr, data_in, 3, 0);
    return ((data_in[1]<<8)+data_in[0]);
}

uint16_t MLX90614::getTA()
{
    uint16_t t;
    t = MLX90614_ReadByte(MLX90614_TA); // Ambient Temperature
    return ((t*2) - 27315) /100;
}

uint16_t MLX90614::getTOBJ1()
{
    uint16_t t;
    t = MLX90614_ReadByte(MLX90614_TOBJ1); // Object Temperature 1
    return ((t*2) - 27315) /100;
}