Remarks

Adxl337
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.Sensors.Motion.Adxl3xx

The ADXL337 is a low power accelerometer capable of measuring +/- 3g of acceleration along three axes. The ADXL337 is controlled via I2C.

Code Example

Adxl337 sensor;

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

    // create the sensor driver
    sensor = new Adxl337(Device, Device.Pins.A00, Device.Pins.A01, Device.Pins.A02, null);

    // classical .NET events can also be used:
    sensor.Updated += (sender, result) => {
        Console.WriteLine($"Accel: [X:{result.New.X.MetersPerSecondSquared:N2}," +
            $"Y:{result.New.Y.MetersPerSecondSquared:N2}," +
            $"Z:{result.New.Z.MetersPerSecondSquared:N2} (m/s^2)]");
    };

    // Example that uses an IObservable subscription to only be notified when the filter is satisfied
    var consumer = Adxl337.CreateObserver(
        handler: result => Console.WriteLine($"Observer: [x] changed by threshold; new [x]: X:{result.New.X:N2}, old: X:{result.Old?.X:N2}"),
        // only notify if there's a greater than 1G change in the Z direction
        filter: result => {
            if (result.Old is { } old) { //c# 8 pattern match syntax. checks for !null and assigns var.
                return ((result.New - old).Z > new Acceleration(1, AU.Gravity));
            }
            return false;
        });
    sensor.Subscribe(consumer);

    return Task.CompletedTask;
}

public async override Task Run()
{
    var result = await sensor.Read();
    Console.WriteLine("Initial Readings:");
    Console.WriteLine($"Accel: [X:{result.X.MetersPerSecondSquared:N2}," +
        $"Y:{result.Y.MetersPerSecondSquared:N2}," +
        $"Z:{result.Z.MetersPerSecondSquared:N2} (m/s^2)]");

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

Sample project(s) available on GitHub

Wiring Example

Characteristic Locus
Inheritance System.Object Adxl3xxBase > Adxl337
Implements IAccelerometer
Inherited Members Adxl3xxBase.Acceleration3DUpdated Adxl3xxBase.XAnalogIn Adxl3xxBase.YAnalogIn Adxl3xxBase.ZAnalogIn Adxl3xxBase.SupplyVoltage Adxl3xxBase.GravityRange Adxl3xxBase.Acceleration3D Adxl3xxBase.RaiseEventsAndNotify(IChangeResult<Acceleration3D>) Adxl3xxBase.ReadSensor() Adxl3xxBase.VoltageToGravity(Voltage)
Namespace Meadow.Foundation.Sensors.Motion
Assembly Adxl3xx.dll

Syntax

public class Adxl337 : Adxl3xxBase, IAccelerometer

Constructors

Adxl337(IAnalogInputController, IPin, IPin, IPin, Nullable<Voltage>)

Create a new ADXL335 sensor object.

Declaration
public Adxl337(IAnalogInputController device, IPin xPin, IPin yPin, IPin zPin, Voltage? supplyVoltage)

Parameters

Type Name Description
IAnalogInputController device

Device that has the analog pins.

IPin xPin

Analog pin connected to the X axis output from the ADXL335 sensor.

IPin yPin

Analog pin connected to the Y axis output from the ADXL335 sensor.

IPin zPin

Analog pin connected to the Z axis output from the ADXL335 sensor.

System.Nullable<Voltage> supplyVoltage

The voltage supplied to the sensor. Defaults to 3.3V if null.