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);
    return Task.CompletedTask;
}
public override async Task Run()
{
    
    var dcMotor1 = motorWing.GetMotor(MotorWing.DCMotorIndex.Motor1);
    
    var dcMotor2 = motorWing.GetMotor(MotorWing.DCMotorIndex.Motor2);
    
    var stepper = motorWing.GetStepper(MotorWing.StepperMotorIndex.Motor2, 200);
    dcMotor1.Run(MotorWing.Direction.Forward);
    dcMotor2.Run(MotorWing.Direction.Reverse);
    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);
    }
}