72 return m_ambientTemperature;
83 return m_objectTemperature;
97 m_ambientTemperature =
read(c_ambientTemperatureAddress, &status)
98 * c_resolution - c_zeroCinK;
102 m_objectTemperature =
read(c_objectTemperatureAddress, &status)
103 * c_resolution - c_zeroCinK;
111 static constexpr
float c_resolution = 0.02F;
112 static constexpr
float c_zeroCinK = 273.15F;
113 static const uint8_t c_deviceAddress = 0x5A;
114 static const uint8_t c_ambientTemperatureAddress = 0x06;
115 static const uint8_t c_objectTemperatureAddress = 0x07;
117 bool m_valid =
false;
118 float m_ambientTemperature = 0.0F;
119 float m_objectTemperature = 0.0F;
121 uint16_t
read(uint8_t reg,
bool *status)
124 i2c.beginTransmission(c_deviceAddress);
126 i2c.endTransmission(
false);
128 uint8_t bytesRead = i2c.requestFrom(c_deviceAddress, 3);
130 if (bytesRead == 3) {
131 uint8_t lsb = i2c.read();
132 uint8_t msb = i2c.read();
137 if (status) *status =
true;
139 if (status) *status =
false;
142 if (status) *status =
false;
float objectTemperature() const
Retrieves the cached object temperature value.
Definition: mlx90614.h:82
bool read()
Reads the ambient and object temperature from the sensor and updates the cached values.
Definition: mlx90614.h:92
static I2c & instance()
Returns the I2c::I2c instance.
Definition: i2c.h:86
bool isValid() const
Determines if the last sensor access was valid.
Definition: mlx90614.h:62
float ambientTemperature() const
Retrieves the cached ambient temperature value.
Definition: mlx90614.h:71
Bit manipulation utilities.
Namespace containing all symbols of the AVR C++ utilities library.
Definition: adc.h:48
bool bitRead(T &value, uint8_t bit)
Returns the bit in the given value.
Definition: utils.h:92
Decodes data from Melexis MLX90614 Infrared thermometer sensors.
Definition: mlx90614.h:53
uint16_t word(uint8_t highByte, uint8_t lowByte)
Converts two bytes to a word.
Definition: utils.h:162
Wrapper for accessing built-in I2C (TWI) communication interfaces.