Ejemplo n.º 1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="dtPin"></param>
 /// <param name="sckPin"></param>
 /// <param name="calibrationWeightSystem">Determines which calibration unit will be used</param>
 /// <param name="calibrationImperialUnit">Only needs entered if weight system is Imperial</param>
 /// <param name="calibrationMetricUnit">Only needs entered if weight system is Metric</param>
 /// <param name="pinNumberingScheme"></param>
 /// <param name="gain"></param>
 /// <param name="msb">Boolean indicating that the HX711 outputs the most significant bit first</param>
 public HX711Settings(int dtPin, int sckPin, WeightSystem calibrationWeightSystem = WeightSystem.Metric,
                      ImperialUnit calibrationImperialUnit = ImperialUnit.Pounds, MetricUnit calibrationMetricUnit = MetricUnit.Grams,
                      double calibrationValue = 0, PinNumberingScheme pinNumberingScheme = PinNumberingScheme.Logical, bool msb = true)
 {
     DTPin  = dtPin;
     SCKPin = sckPin;
     MSB    = msb;
     CalibrationWeightSystem = calibrationWeightSystem;
     CalibrationImperialUnit = calibrationImperialUnit;
     CalibrationMetricUnit   = calibrationMetricUnit;
     CalibrationValue        = calibrationValue;
     PinNumberingScheme      = pinNumberingScheme;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// New Imperial Weight measurement from <paramref name="value"/> in <paramref name="unit"/>
        /// </summary>
        /// <param name="value"></param>
        /// <param name="unit"></param>
        public ImperialWeight(double value, ImperialUnit unit)
        {
            _pounds = _ounces = _grains = _stones = _tons = 0;

            switch (unit)
            {
            case ImperialUnit.Pounds:
            {
                BaseValue = value;
                break;
            }

            case ImperialUnit.Grains:
            {
                Grains = value;
                break;
            }

            case ImperialUnit.Ounces:
            {
                Ounces = value;
                break;
            }

            case ImperialUnit.Stones:
            {
                Stones = value;
                break;
            }

            case ImperialUnit.Tons:
            {
                Tons = value;
                break;
            }

            default:
            {
                throw new UnknownConversionException($"IoT Library Exception! Someone forgot to add '{unit.ToString()}' to the constructor!");
            }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Re-calibrates HX711 using the given weight system, unit, and weight value. Returns calibration factor.
        /// </summary>
        /// <param name="weightSystem"></param>
        /// <param name="calibrationWeight"></param>
        /// <param name="imperialCalibrationUnit">Only used if <paramref name="weightSystem"/> is imperial</param>
        /// <param name="metricCalibrationUnit">Only used if <paramref name="weightSystem"/> is metric</param>
        /// <param name="readings">Number of readings to average together. Defaults to 10</param>
        /// <returns></returns>
        public double Calibrate(WeightSystem weightSystem, double calibrationWeight, ImperialUnit imperialCalibrationUnit = ImperialUnit.Pounds, MetricUnit metricCalibrationUnit = MetricUnit.Grams, int readings = 10)
        {
            _readLock.Wait();
            try
            {
                List <double> values = new List <double>(readings);
                for (int i = 0; i < readings; i++)
                {
                    values.Add((ReadRaw() - TareValue) / calibrationWeight);
                }
                _settings.CalibrationValue = values.Average();

                _settings.CalibrationWeightSystem = weightSystem;
                _settings.CalibrationMetricUnit   = metricCalibrationUnit;
                _settings.CalibrationImperialUnit = imperialCalibrationUnit;
                return(_settings.CalibrationValue);
            }
            finally
            {
                _readLock.Release();
            }
        }
Ejemplo n.º 4
0
 public Double In(ImperialUnit unit)
 {
     return GetDistanceInMeters() * imperialFactors[unit];
 }
Ejemplo n.º 5
0
 public static Distance Of(Double amount, ImperialUnit unit)
 {
     return new FixedDistance(amount / imperialFactors[unit]);
 }
Ejemplo n.º 6
0
 public Double In(ImperialUnit unit)
 {
     return(GetDistanceInMeters() * imperialFactors[unit]);
 }
Ejemplo n.º 7
0
 public static Distance Of(Double amount, ImperialUnit unit)
 {
     return(new FixedDistance(amount / imperialFactors[unit]));
 }