Remarks

WaterSensor
Status Status badge: working
Source code GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Grove.Sensors.Environmental.WaterSensor

Code Example

WaterSensor waterSensor;

public override Task Initialize()
{
    Console.WriteLine("Initialize...");

    waterSensor = new WaterSensor(Device.Pins.A01);

    waterSensor.Subscribe(WaterSensor.CreateObserver(
        h => Console.WriteLine($"Water level changed by 10 mm; new: {h.New}, old: {h.Old}"),
        null //e => { return Math.Abs(e.Delta) > 0.1f; }
    ));

    waterSensor.Updated += (object sender, IChangeResult<float> e) => 
    {
        Console.WriteLine($"Level Changed, level: {e.New}cm");
    };

    return Task.CompletedTask;
}

public override async Task Run()
{
    var conditions = await waterSensor.Read();
    Console.WriteLine($"Initial level: {conditions}");

    waterSensor.StartUpdating(TimeSpan.FromSeconds(5));
}

Sample project(s) available on GitHub

Wiring Example

WaterSensor Meadow Pin
GND GND
VCC 3.3V
RX D01
TX D00
Characteristic Locus
Inheritance System.Object ObservableBase<System.Single> SamplingSensorBase<System.Single> AnalogWaterLevel > WaterSensor
Implements ISamplingSensor<System.Single>
Inherited Members AnalogWaterLevel.AnalogInputPort AnalogWaterLevel.LevelCalibration AnalogWaterLevel.WaterLevel AnalogWaterLevel.ReadSensor() AnalogWaterLevel.StartUpdating(Nullable<TimeSpan>) AnalogWaterLevel.StopUpdating() AnalogWaterLevel.VoltageToWaterLevel(Voltage) SamplingSensorBase<Single>.samplingLock SamplingSensorBase<Single>.Updated SamplingSensorBase<Single>.SamplingTokenSource SamplingSensorBase<Single>.Conditions SamplingSensorBase<Single>.IsSampling SamplingSensorBase<Single>.UpdateInterval SamplingSensorBase<Single>.RaiseEventsAndNotify(IChangeResult<>) SamplingSensorBase<Single>.Read() ObservableBase<Single>.observers ObservableBase<Single>.NotifyObservers(IChangeResult<>) Meadow.Foundation.ObservableBase<System.Single>.Subscribe(IObserver<>) Meadow.Foundation.ObservableBase<System.Single>.CreateObserver(Action<>, System.Nullable<Predicate<IChangeResult<UNIT>>>)
Namespace Meadow.Foundation.Grove.Sensors.Environmental
Assembly WaterSensor.dll

Syntax

public class WaterSensor : AnalogWaterLevel, ISamplingSensor<float>

Constructors

WaterSensor(IAnalogInputPort, AnalogWaterLevel.Calibration)

Declaration
public WaterSensor(IAnalogInputPort analogInputPort, AnalogWaterLevel.Calibration calibration = null)

Parameters

Type Name Description
IAnalogInputPort analogInputPort
AnalogWaterLevel.Calibration calibration

WaterSensor(IPin, AnalogWaterLevel.Calibration, Nullable<TimeSpan>)

Declaration
public WaterSensor(IPin analogPin, AnalogWaterLevel.Calibration calibration = null, TimeSpan? updateInterval = null)

Parameters

Type Name Description
IPin analogPin
AnalogWaterLevel.Calibration calibration
System.Nullable<TimeSpan> updateInterval