/// <summary> /// Reads relative humidity. /// </summary> /// <param name="humidityMeasurementMode"></param> /// <returns>A single representing the humidity read from the source as %RH.</returns> /// <example> /// <code language = "C#"> /// Debug.WriteLine("Humidity..........: " + _tempHum.ReadHumidity().ToString("F2") + " %RH"); /// </code> /// </example> public Single ReadHumidity(HumidityMeasurementModes humidityMeasurementMode = HumidityMeasurementModes.Relative) { if (humidityMeasurementMode == HumidityMeasurementModes.Absolute) { throw new NotSupportedException("This module does not support reading absolute humidity. Use relative humidity mode instead."); } if ((ReadRegister(HTS221_CTRL_REG1) & 0x03) == 0x00) // If we are in one-shot mode, enable a one-shot conversion. { // Set one-shot enable while forcing the heater off also BOOT bit (bit 7) should be 0. WriteRegister(HTS221_CTRL_REG2, 0x01); } // Wait here for completion of conversion either in one-shot mode or via ODR cycle WaitForSensorData(HTS221_STATUS_REG, HTS221_HUMIDITY_DATA_AVAILABLLE_BIT); sensorData = ReadRegister(HTS221_HUMIDITY_OUT_L); sensorData |= (Int16)(ReadRegister(HTS221_HUMIDITY_OUT_H) << 8); humidity = (sensorData - H0_T0_OUT) / (Single)(H1_T0_OUT - H0_T0_OUT); humidity = H0_rH + humidity * (H1_rH - H0_rH); humidity /= 2; return(humidity); }
/// <summary> /// Returns the humidity as read from the HTU21D Click in degrees % RH. /// </summary> /// <param name="measurementMode">The measurement mode. See <see cref="HumidityMeasurementModes"/> for more information.</param> /// <returns>The humidity as read from the HTU21D click in %RH.</returns> /// <exception cref="NotImplementedException">A NotImplementedException will be thrown is attempting to read <see cref="HumidityMeasurementModes.Absolute"/></exception> /// <example>Example usage: /// <code language = "C#"> /// Debug.Print("Humidity - " + sensor.ReadHumidity(HumidityMeasurementModes.Relative).ToString("n2") + " %RH"); /// </code> /// <code language = "VB"> /// Debug.Print("Humidity - " <![CDATA[&]]> sensor.ReadHumidity(HumidityMeasurementModes.Relative).ToString("n2") <![CDATA[&]]> " %RH") /// </code> /// </example> public float ReadHumidity(HumidityMeasurementModes measurementMode = HumidityMeasurementModes.Relative) { if (measurementMode == HumidityMeasurementModes.Absolute) { throw new NotImplementedException("Absolute Humidity measurement not supported. Use HumidityMeasurementModes.Absolute for humidity measurement."); } return(ReadSensor(_measurementMode, MeasurementType.Humidity)); }
/// <summary> /// Reads the humidity from the HDC1000 Click. /// </summary> /// <param name="measurementMode">The <see cref="HumidityMeasurementModes"/> to read the Humidity from.</param> /// <returns>The humidity measured in %RH.</returns> /// <exception cref="InvalidOperationException"> an InvalidOperationException will be thrown if attempting to read <see cref="HumidityMeasurementModes.Absolute"/> as this module does not support Absolute humidity measurement.</exception> /// <example>Example usage: /// <code language = "C#"> /// Debug.Print("Humidity - " + _tempHumidity.ReadHumidity()); /// </code> /// </example> public Single ReadHumidity(HumidityMeasurementModes measurementMode = HumidityMeasurementModes.Relative) { if (measurementMode == HumidityMeasurementModes.Absolute) { throw new InvalidOperationException("Absolute humidity measurement not supported by the HDC1000 Click"); } _dataAvailable = false; WriteRegister(HumidityRegister); while (_dataAvailable == false) { } Byte[] readBuffer = ReadRegister(2); return((readBuffer[0] << 8) / 65536.0f * 100.0f); }
/// <summary> /// Reads the humidity from the TempHum11 Click. /// </summary> /// <param name="measurementMode">The <see cref="HumidityMeasurementModes" /> to read the Humidity from.</param> /// <returns>The humidity measured in %RH.</returns> /// <exception cref="InvalidOperationException"> /// an InvalidOperationException will be thrown if attempting to read /// <see cref="HumidityMeasurementModes.Absolute" /> as this module does not support Absolute humidity measurement. /// </exception> /// <example> /// Example usage: /// <code language="C#"> /// Debug.WriteLine("Humidity - " + _tempHumidity.ReadHumidity()); /// </code> /// </example> public Single ReadHumidity(HumidityMeasurementModes measurementMode = HumidityMeasurementModes.Relative) { if (measurementMode == HumidityMeasurementModes.Absolute) { throw new InvalidOperationException( "Absolute humidity measurement not supported by the TempHum11 Click"); } if (_acquisitionMode == AcquisitionMode.Sequential) { throw new ApplicationException( "You cannot read temperature independantly while Acquisition Mode is set for sequential access."); } WriteByte(HumidityRegister); Thread.Sleep(15); Byte[] readBuffer = ReadBytes(2); return((Single)((readBuffer[0] << 8) / 65536.0 * 100.0)); }
/// <summary> /// Reads the humidity from the TempHum4 Click. /// </summary> /// <param name="measurementMode">The <see cref="HumidityMeasurementModes" /> to read the Humidity from.</param> /// <returns>The humidity measured in %RH.</returns> /// <exception cref="InvalidOperationException"> /// an InvalidOperationException will be thrown if attempting to read /// <see cref="HumidityMeasurementModes.Absolute" /> as this module does not support Absolute humidity measurement. /// </exception> /// <example> /// Example usage: /// <code language="C#"> /// Debug.WriteLine("Humidity - " + _sensor.ReadHumidity()); /// </code> /// </example> public Single ReadHumidity(HumidityMeasurementModes measurementMode = HumidityMeasurementModes.Relative) { if (measurementMode == HumidityMeasurementModes.Absolute) { throw new InvalidOperationException( "Absolute humidity measurement not supported by the TempHum11 Click"); } if (AcquisitionMode == AcquisitionModes.Sequential) { throw new ApplicationException( "You cannot read temperature independantly while Acquisition Mode is set for sequential access. Use the ReadSensor method instead."); } WriteByte(HumidityRegister); while (_dataReadyPin.Read() == GpioPinValue.High) { } Byte[] readBuffer = ReadBytes(2); return((Single)((readBuffer[0] << 8) / 65536.0 * 100.0)); }
/// <summary> /// Reads the (temperature compensated) humidity value from the SHT11 Click. /// </summary> /// <param name="source">The <see cref="HumidityMeasurementModes"/> to measure. The SHT11Click only supports <see cref="HumidityMeasurementModes.Relative"/> measurement.</param> /// <returns> /// A float representing the (temperature compensated) relative humidity as read from the sensor, in percentage (%). /// </returns> /// <exception cref="NotImplementedException">Will be raised if sources is <see cref="HumidityMeasurementModes.Absolute"/>.</exception> /// <example>Example usage: /// <code language="C#"> /// Debug.Print("Humidity - " + _sht11Click.ReadHumidity(HumiditySources.Relative)); /// </code> /// <code language="VB"> /// Debug.Print("Humidity - " <![CDATA[&]]> _sht11Click.ReadHumidity(HumiditySources.Relative)) /// </code> /// </example> public float ReadHumidity(HumidityMeasurementModes source = HumidityMeasurementModes.Relative) { if (source == HumidityMeasurementModes.Absolute) { throw new NotImplementedException("The SHT11 Click does not provide Absolute Humidity measurement. Use HumiditySources.Relative for Humidity measurement."); } // First read the Temperature to be used for temperature compensation. var temp = ReadTemperature(); byte status = ReadStatusRegister(); var sOrh = ReadRaw(Commands.MeasureRelativeHumidity); if (IsBitSet(status, 0)) //Low Resolution { var rHLinear = -2.0468F + 0.5872F * sOrh + -4.0845E-4F * sOrh * sOrh; return((temp - 25.0F) * (0.01F + 0.00128F * sOrh) + rHLinear); } var rHlinear = -2.0468F + 0.0367F * sOrh + -1.5955E-6F * sOrh * sOrh; return((temp - 25.0F) * (0.01F + 0.00008F * sOrh) + rHlinear); }
/// <summary> /// Reads the Humidity /// </summary> /// <param name="measurementMode">The <see cref="HumidityMeasurementModes"/> to use.</param> /// <exception cref="NotSupportedException">A NotSupportedException will be thrown if attempting to read the humidity with this method. /// Direct reading of humidity is not supported with this module. Use the <see cref="ReadSensor"/> method instead. /// </exception> public Single ReadHumidity(HumidityMeasurementModes measurementMode) { throw new NotSupportedException("This modules does not support direct reading of raw temperature data."); }
/// <summary> /// Reads the relative or absolute humidity value from the sensor. /// </summary> /// <exception cref="NotImplementedException">Not supported by this sensor.</exception> /// <returns>A single representing the relative/absolute humidity as read from the sensor, in percentage (%) for relative reading or value in case of absolute reading.</returns> /// <example>None: Not supported.</example> public float ReadHumidity(HumidityMeasurementModes measurementMode = HumidityMeasurementModes.Relative) { throw new NotImplementedException("This module does not support direct measurement of Humidity."); }