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, 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 > Temt6000
Namespace Meadow.Foundation.Sensors.Light
Assembly Temt6000.dll

Syntax

public class Temt6000 : AnalogSamplingBase

Constructors

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

Creates a new Temt6000 object

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

Parameters

Type Name Description
IAnalogInputController device

The device connected to the sensor

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

Temt6000(IAnalogInputPort)

Creates a new Temt6000 driver

Declaration
public Temt6000(IAnalogInputPort port)

Parameters

Type Name Description
IAnalogInputPort port