Remarks

MotorWing
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.FeatherWings.MotorWing

Code Example

MotorWing motorWing;

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

    var i2CBus = Device.CreateI2cBus(I2cBusSpeed.FastPlus);
    motorWing = new MotorWing(i2CBus, new Frequency(100, Frequency.UnitType.Hertz), 0x61);
    motorWing.Initialize();

    return Task.CompletedTask;
}

public override async Task Run()
{
    //Get DC motor 1
    var dcMotor1 = motorWing.GetMotor(1);

    //Get DC motor 2
    var dcMotor2 = motorWing.GetMotor(2);

    //Get Stepper motor number 2
    var stepper = motorWing.GetStepper(2, 200);

    dcMotor1.Run(Commmand.FORWARD);
    dcMotor2.Run(Commmand.BACKWARD);

    while (true)
    {
        Console.WriteLine("Speed up");
        for (short i = 0; i <= 255; i++)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(50);

        await Task.Delay(500);

        Console.WriteLine("Slow down");
        for (short i = 255; i >= 0; i--)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(-50);

        await Task.Delay(500);
    }
}

Sample project(s) available on GitHub

Characteristic Locus
Inheritance object > MotorWing
Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString()
Namespace Meadow.Foundation.FeatherWings
Assembly MotorWing.dll

Syntax

public class MotorWing

Constructors

MotorWing(II2cBus, Frequency, byte)

Creates a MotorWing driver

Declaration
public MotorWing(II2cBus i2cBus, Frequency frequency, byte address = 64)

Parameters

Type Name Description
II2cBus i2cBus

The I2C bus connected to the device

Frequency frequency

The PWM frequency for the PCA9685 IC

byte address

The address of the i2c Peripheral

Remarks

MotorWing
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.FeatherWings.MotorWing

Code Example

MotorWing motorWing;

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

    var i2CBus = Device.CreateI2cBus(I2cBusSpeed.FastPlus);
    motorWing = new MotorWing(i2CBus, new Frequency(100, Frequency.UnitType.Hertz), 0x61);
    motorWing.Initialize();

    return Task.CompletedTask;
}

public override async Task Run()
{
    //Get DC motor 1
    var dcMotor1 = motorWing.GetMotor(1);

    //Get DC motor 2
    var dcMotor2 = motorWing.GetMotor(2);

    //Get Stepper motor number 2
    var stepper = motorWing.GetStepper(2, 200);

    dcMotor1.Run(Commmand.FORWARD);
    dcMotor2.Run(Commmand.BACKWARD);

    while (true)
    {
        Console.WriteLine("Speed up");
        for (short i = 0; i <= 255; i++)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(50);

        await Task.Delay(500);

        Console.WriteLine("Slow down");
        for (short i = 255; i >= 0; i--)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(-50);

        await Task.Delay(500);
    }
}

Sample project(s) available on GitHub

Methods

GetMotor(short)

Returns a instance of a DC Motor object

Declaration
public DCMotor GetMotor(short dcMotorIndex)

Parameters

Type Name Description
short dcMotorIndex

The motor port we want to use: 1 thru 4 are valid

Returns

Type Description
DCMotor

DCMotor

Remarks

MotorWing
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.FeatherWings.MotorWing

Code Example

MotorWing motorWing;

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

    var i2CBus = Device.CreateI2cBus(I2cBusSpeed.FastPlus);
    motorWing = new MotorWing(i2CBus, new Frequency(100, Frequency.UnitType.Hertz), 0x61);
    motorWing.Initialize();

    return Task.CompletedTask;
}

public override async Task Run()
{
    //Get DC motor 1
    var dcMotor1 = motorWing.GetMotor(1);

    //Get DC motor 2
    var dcMotor2 = motorWing.GetMotor(2);

    //Get Stepper motor number 2
    var stepper = motorWing.GetStepper(2, 200);

    dcMotor1.Run(Commmand.FORWARD);
    dcMotor2.Run(Commmand.BACKWARD);

    while (true)
    {
        Console.WriteLine("Speed up");
        for (short i = 0; i <= 255; i++)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(50);

        await Task.Delay(500);

        Console.WriteLine("Slow down");
        for (short i = 255; i >= 0; i--)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(-50);

        await Task.Delay(500);
    }
}

Sample project(s) available on GitHub

GetStepper(short, int)

Returns a instance of a Stepper Motor object

Declaration
public StepperMotor GetStepper(short stepperMotorIndex, int steps)

Parameters

Type Name Description
short stepperMotorIndex

The stepper motor port we want to use: only 0 or 1 are valid

int steps

The number of steps the motor has

Returns

Type Description
StepperMotor

StepperMotor

Remarks

MotorWing
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.FeatherWings.MotorWing

Code Example

MotorWing motorWing;

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

    var i2CBus = Device.CreateI2cBus(I2cBusSpeed.FastPlus);
    motorWing = new MotorWing(i2CBus, new Frequency(100, Frequency.UnitType.Hertz), 0x61);
    motorWing.Initialize();

    return Task.CompletedTask;
}

public override async Task Run()
{
    //Get DC motor 1
    var dcMotor1 = motorWing.GetMotor(1);

    //Get DC motor 2
    var dcMotor2 = motorWing.GetMotor(2);

    //Get Stepper motor number 2
    var stepper = motorWing.GetStepper(2, 200);

    dcMotor1.Run(Commmand.FORWARD);
    dcMotor2.Run(Commmand.BACKWARD);

    while (true)
    {
        Console.WriteLine("Speed up");
        for (short i = 0; i <= 255; i++)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(50);

        await Task.Delay(500);

        Console.WriteLine("Slow down");
        for (short i = 255; i >= 0; i--)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(-50);

        await Task.Delay(500);
    }
}

Sample project(s) available on GitHub

Initialize()

Initialize the MotorWings

Declaration
public void Initialize()

Remarks

MotorWing
Status Status badge: working
Source code GitHub
Datasheet(s) GitHub
NuGet package NuGet Gallery for Meadow.Foundation.FeatherWings.MotorWing

Code Example

MotorWing motorWing;

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

    var i2CBus = Device.CreateI2cBus(I2cBusSpeed.FastPlus);
    motorWing = new MotorWing(i2CBus, new Frequency(100, Frequency.UnitType.Hertz), 0x61);
    motorWing.Initialize();

    return Task.CompletedTask;
}

public override async Task Run()
{
    //Get DC motor 1
    var dcMotor1 = motorWing.GetMotor(1);

    //Get DC motor 2
    var dcMotor2 = motorWing.GetMotor(2);

    //Get Stepper motor number 2
    var stepper = motorWing.GetStepper(2, 200);

    dcMotor1.Run(Commmand.FORWARD);
    dcMotor2.Run(Commmand.BACKWARD);

    while (true)
    {
        Console.WriteLine("Speed up");
        for (short i = 0; i <= 255; i++)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(50);

        await Task.Delay(500);

        Console.WriteLine("Slow down");
        for (short i = 255; i >= 0; i--)
        {
            dcMotor1.SetSpeed(i);
            dcMotor2.SetSpeed(i);
            await Task.Delay(10);
        }

        stepper.Step(-50);

        await Task.Delay(500);
    }
}

Sample project(s) available on GitHub