Richard Kuo
/
NTOUEE-mbed-I2C_MLX90614
I2C MLX90614 InfraRed Thermo sensor
Diff: mlx90614.cpp
- Revision:
- 0:0f4840f6bf23
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mlx90614.cpp Tue Oct 25 10:42:06 2016 +0000 @@ -0,0 +1,35 @@ +#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; +}