Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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));
        }
Beispiel #5
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));
        }
Beispiel #6
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);
        }
Beispiel #7
0
 /// <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.");
 }
Beispiel #8
0
 /// <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.");
 }