/// <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; }
/// <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!"); } } }
/// <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(); } }
public Double In(ImperialUnit unit) { return GetDistanceInMeters() * imperialFactors[unit]; }
public static Distance Of(Double amount, ImperialUnit unit) { return new FixedDistance(amount / imperialFactors[unit]); }
public Double In(ImperialUnit unit) { return(GetDistanceInMeters() * imperialFactors[unit]); }
public static Distance Of(Double amount, ImperialUnit unit) { return(new FixedDistance(amount / imperialFactors[unit])); }