Remarks

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

Code Example

MotorWing motorWing;

public MeadowApp()
{
    Console.WriteLine("Initializing ...");
    var i2CBus = Device.CreateI2cBus(I2cBusSpeed.FastPlus);
    motorWing = new MotorWing(i2CBus, 0x61);
    motorWing.Initialize();

    Run();
}

void 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);
            Thread.Sleep(10);
        }

        stepper.Step(50);

        Thread.Sleep(500);

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

        stepper.Step(-50);

        Thread.Sleep(500);
    }
}

Sample project(s) available on GitHub

Characteristic Locus
Inheritance System.Object > MotorWing
Namespace Meadow.Foundation.FeatherWings
Assembly MotorWing.dll

Syntax

public class MotorWing : object

Constructors

MotorWing(II2cBus, Byte, Int32)

Declaration
public MotorWing(II2cBus i2cBus, byte address = null, int frequency = 1600)

Parameters

Type Name Description
II2cBus i2cBus

i2c bus

System.Byte address

The address of the i2c Peripheral

System.Int32 frequency

The PWM frequency for the PCA9685 IC

Methods

GetMotor(Int16)

Returns a instance of a DC Motor object

Declaration
public DCMotor GetMotor(short dcMotorIndex)

Parameters

Type Name Description
System.Int16 dcMotorIndex

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

Returns

Type Description
DCMotor

DCMotor

GetStepper(Int16, Int32)

Returns a instance of a Stepper Motor object

Declaration
public StepperMotor GetStepper(short stepperMotorIndex, int steps)

Parameters

Type Name Description
System.Int16 stepperMotorIndex

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

System.Int32 steps

The number of steps the motor has

Returns

Type Description
StepperMotor

StepperMotor

Initialize()

Initialize the PCA9685

Declaration
public void Initialize()