Mangue Baja Personalized MLX program
Diff: my_mlx.cpp
- Revision:
- 0:b8c679416b97
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/my_mlx.cpp Thu Aug 01 11:41:20 2019 +0000 @@ -0,0 +1,83 @@ +/*************************************************** + This is a library for the MLX90614 Temp Sensor + Designed specifically to work with the MLX90614 sensors in the + adafruit shop + ----> https://www.adafruit.com/products/1748 + ----> https://www.adafruit.com/products/1749 + These sensors use I2C to communicate, 2 pins are required to + interface + Adafruit invests time and resources providing this open source code, + please support Adafruit and open-source hardware by purchasing + products from Adafruit! + Written by Limor Fried/Ladyada for Adafruit Industries. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include "my_mlx.h" + +//Adafruit_MLX90614::Adafruit_MLX90614(uint8_t i2caddr) { +// _addr = i2caddr; +//} + +Adafruit_MLX90614::Adafruit_MLX90614(PinName sda, PinName scl) +{ + i2c_ = new I2C(sda, scl); + i2c_->frequency(400000); +} + +Adafruit_MLX90614::Adafruit_MLX90614(I2C *i2c) : i2c_(i2c) { + } + +Adafruit_MLX90614::~Adafruit_MLX90614() { + delete i2c_; + } + +////////////////////////////////////////////////////// + + +double Adafruit_MLX90614::readObjectTempF(void) { + return (readTemp(MLX90614_TOBJ1) * 9 / 5) + 32; +} + + +double Adafruit_MLX90614::readAmbientTempF(void) { + return (readTemp(MLX90614_TA) * 9 / 5) + 32; +} + +double Adafruit_MLX90614::readObjectTempC(void) { + return readTemp(MLX90614_TOBJ1); +} + + +double Adafruit_MLX90614::readAmbientTempC(void) { + return readTemp(MLX90614_TA); +} + +float Adafruit_MLX90614::readTemp(uint8_t reg) { + float temp; + + temp = read16(reg); + temp *= .02; + temp -= 273.15; + return temp; +} + +/*********************************************************************/ + +uint16_t Adafruit_MLX90614::read16(uint8_t a) { + uint16_t ret; + char cmd[3] = { 0 }; + + //Wire.beginTransmission(_addr); // start transmission to device + i2c_->write(_addr,cmd,1,true); + //Wire.write(a); // sends register address to read from + //Wire.endTransmission(false); // end transmission + + // Wire.requestFrom(_addr, (uint8_t)3);// send data n-bytes read + ret = i2c_->read(_addr,cmd,3); // receive DATA + ret |= i2c_->read(_addr,cmd,3) << 8; // receive DATA + + uint8_t pec = i2c_->read(_addr,cmd,3); + + return ret; +} \ No newline at end of file