/// <summary> /// Make a temperature and humidity reading. /// </summary> public void Update() { _si7021.WriteByte(Registers.MeasureHumidityNoHold); // // Maximum conversion time is 12ms (page 5 of the datasheet). // Thread.Sleep(25); var data = _si7021.ReadBytes(3); var humidityReading = (ushort)((data[0] << 8) + data[1]); Humidity = ((125 * (float)humidityReading) / 65536) - 6; if (Humidity < 0) { Humidity = 0; } else { if (Humidity > 100) { Humidity = 100; } } data = _si7021.ReadRegisters(Registers.ReadPreviousTemperatureMeasurement, 2); var temperatureReading = (short)((data[0] << 8) + data[1]); Temperature = (float)(((175.72 * temperatureReading) / 65536) - 46.85); }