Remarks

Temt6000
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Light.Temt6000

The TEMT6000 is an analog ambient light sensor.

Code Example

Temt6000 sensor;

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

    // configure our sensor
    sensor = new Temt6000(Device.Pins.A03);

    // Example that uses an IObservable subscription to only be notified when the voltage changes by at least 0.5V
    var consumer = Temt6000.CreateObserver(
        handler: result => Resolver.Log.Info($"Observer filter satisfied: {result.New.Volts:N2}V, old: {result.Old?.Volts:N2}V"),
        // only notify if the change is greater than 0.5V
        filter: result => {
            if (result.Old is { } old) { //c# 8 pattern match syntax. checks for !null and assigns var.
                return (result.New - old).Abs().Volts > 0.5; // returns true if > 0.5V change.
            }
            return false;
        });

    sensor.Subscribe(consumer);

    // classical .NET events can also be used:
    sensor.Updated += (sender, result) => {
        Resolver.Log.Info($"Voltage Changed, new: {result.New.Volts:N2}V, old: {result.Old?.Volts:N2}V");
    };

    return Task.CompletedTask;
}

public override async Task Run()
{
    var result = await sensor.Read();
    Resolver.Log.Info($"Initial temp: {result.Volts:N2}V");

    sensor.StartUpdating(TimeSpan.FromMilliseconds(1000));
}

Sample project(s) available on GitHub

Wiring Example

To wire a Temt6000 to your Meadow board, connect the following:

Temt6000 Meadow Pin
GND GND
SIG A03
VCC 3V3

It should look like the following diagram:

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

Syntax

public class Temt6000 : AnalogSamplingBase, ISamplingSensor<Voltage>

Constructors

Temt6000(IAnalogInputPort)

Creates a new Temt6000 driver

Declaration
public Temt6000(IAnalogInputPort port)

Parameters

Type Name Description
IAnalogInputPort port

Temt6000(IPin, Int32, Nullable<TimeSpan>, Nullable<Voltage>)

Creates a new Temt6000 object

Declaration
public Temt6000(IPin pin, int sampleCount = 5, TimeSpan? sampleInterval = null, Voltage? voltage = null)

Parameters

Type Name Description
IPin pin

The analog pin

System.Int32 sampleCount

The sample count

System.Nullable<TimeSpan> sampleInterval

The sample interval

System.Nullable<Voltage> voltage

The peak voltage