Remarks

Thermistor
Status Status badge: working
Source code GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Temperature.Thermistor

Code Example

private SteinhartHartCalculatedThermistor thermistor;

public override Task Initialize()
{
    Resolver.Log.Info("Initialize...");

    thermistor = new SteinhartHartCalculatedThermistor(Device.CreateAnalogInputPort(Device.Pins.A00), new Resistance(10, Meadow.Units.Resistance.UnitType.Kiloohms));

    var consumer = SteinhartHartCalculatedThermistor.CreateObserver(
        handler: result =>
        {
            Resolver.Log.Info($"Temperature New Value {result.New.Fahrenheit:N1}F/{result.New.Celsius:N1}C");
            Resolver.Log.Info($"Temperature Old Value {result.Old?.Fahrenheit:N1}F/{result.Old?.Celsius:N1}C");
        },
        filter: null
    );
    thermistor.Subscribe(consumer);

    thermistor.TemperatureUpdated += (object sender, IChangeResult<Meadow.Units.Temperature> e) =>
    {
        Resolver.Log.Info($"Temperature Updated: {e.New.Fahrenheit:N1}F/{e.New.Celsius:N1}C");
    };

    return Task.CompletedTask;
}

public override async Task Run()
{
    var temp = await thermistor.Read();
    Resolver.Log.Info($"Current temperature: {temp.Fahrenheit:N1}F/{temp.Celsius:N1}C");

    thermistor.StartUpdating(TimeSpan.FromSeconds(1));
}

Sample project(s) available on GitHub

Characteristic Locus
Inheritance System.Object ObservableBase<Units.Temperature> SamplingSensorBase<Units.Temperature> PollingSensorBase<Units.Temperature> > Thermistor > SteinhartHartCalculatedThermistor
Implements ISamplingSensor<Units.Temperature> ISamplingSensor<Units.Temperature> ITemperatureSensor
Inherited Members PollingSensorBase<Units.Temperature>.StartUpdating(Nullable<TimeSpan>) PollingSensorBase<Units.Temperature>.StopUpdating() SamplingSensorBase<Units.Temperature>.samplingLock SamplingSensorBase<Units.Temperature>.Updated SamplingSensorBase<Units.Temperature>.SamplingTokenSource SamplingSensorBase<Units.Temperature>.Conditions SamplingSensorBase<Units.Temperature>.IsSampling SamplingSensorBase<Units.Temperature>.UpdateInterval SamplingSensorBase<Units.Temperature>.ReadSensor() SamplingSensorBase<Units.Temperature>.RaiseEventsAndNotify(IChangeResult<>) SamplingSensorBase<Units.Temperature>.Read() ObservableBase<Units.Temperature>.observers ObservableBase<Units.Temperature>.NotifyObservers(IChangeResult<>) Meadow.Foundation.ObservableBase<Units.Temperature>.Subscribe(IObserver<>) Meadow.Foundation.ObservableBase<Units.Temperature>.CreateObserver(Action<>, System.Nullable<Predicate<IChangeResult<UNIT>>>)
Namespace Meadow.Foundation.Sensors.Temperature
Assembly Thermistor.dll

Syntax

public abstract class Thermistor : PollingSensorBase<Units.Temperature>, ISamplingSensor<Units.Temperature>, ISamplingSensor<Units.Temperature>, ITemperatureSensor

Constructors

Thermistor(IAnalogInputPort)

Creates a new Thermistor object using the provided analog input

Declaration
protected Thermistor(IAnalogInputPort analogInput)

Parameters

Type Name Description
IAnalogInputPort analogInput

The analog input reading the thermistor voltage divider output

Properties

AnalogInput

The analog input eing used to determine output voltage of the voltage divider circuit

Declaration
protected IAnalogInputPort AnalogInput { get; }

Property Value

Type Description
IAnalogInputPort

NominalResistance

The nominal resistance of the thermistor (e.g. 10kOhm for a 10k thermistor)

Declaration
public abstract Resistance NominalResistance { get; }

Property Value

Type Description
Resistance

NominalTemperature

The nominal temperature for the nominal resistance, typically 25C.

Declaration
public virtual Units.Temperature NominalTemperature { get; }

Property Value

Type Description
Units.Temperature

Temperature

The temperature from the last reading.

Declaration
public Units.Temperature? Temperature { get; protected set; }

Property Value

Type Description
System.Nullable<Units.Temperature>

Events

TemperatureUpdated

Raised when the temperature is updated

Declaration
public event EventHandler<IChangeResult<Units.Temperature>> TemperatureUpdated

Event Type

Type Description
EventHandler<IChangeResult<Units.Temperature>>