public static void Main() { #if UseOnboardLedForDiagnostics Led = new OutputPort(Pins.ONBOARD_LED, false); #endif #if AdafruitV1Shield var latch = new OutputPort(Pins.GPIO_PIN_D12, false); var enable = new OutputPort(Pins.GPIO_PIN_D7, true); var data = new OutputPort(Pins.GPIO_PIN_D8, false); var clock = new OutputPort(Pins.GPIO_PIN_D4, false); var adafruitMotorShieldV1 = new AdafruitV2MotorShield(latch, enable, data, clock); adafruitMotorShieldV1.InitializeShield(); StepperM1M2 = adafruitMotorShieldV1.GetHalfSteppingStepperMotor(1, 2); StepperM3M4 = adafruitMotorShieldV1.GetMicrosteppingStepperMotor(64, 3, 4); #elif AdafruitV2Shield var adafruitMotorShieldV2 = new AdafruitV2MotorShield(); // use shield at default I2C address. adafruitMotorShieldV2.InitializeShield(); StepperM1M2 = adafruitMotorShieldV2.GetMicrosteppingStepperMotor(MicrostepsPerStep, 1, 2); StepperM3M4 = adafruitMotorShieldV2.GetMicrosteppingStepperMotor(MicrostepsPerStep, 3, 4); #elif SparkfunArduMotoShield var shield = new ArdumotoShield(); shield.InitializeShield(); var phase1 = shield.GetHBridge(Connector.A, TargetDevice.Netduino); var phase2 = shield.GetHBridge(Connector.B, TargetDevice.Netduino); StepperM1M2 = shield.GetMicrosteppingStepperMotor(MicrostepsPerStep, phase1, phase2); #elif LedSimulatorShield var StepperM1M2 = LedMotorSimulator.GetSimulatedStepperMotor(Pins.GPIO_PIN_D0, PWMChannels.PWM_ONBOARD_LED, Pins.GPIO_PIN_D1, PWMChannels.PWM_PIN_D6); var StepperM3M4 = LedMotorSimulator.GetSimulatedStepperMotor(Pins.GPIO_PIN_D2, PWMChannels.PWM_PIN_D9, Pins.GPIO_PIN_D3, PWMChannels.PWM_PIN_D10); #else throw new ApplicationException("Uncomment one of the shield #define statements"); #endif var axis1 = new AcceleratingStepperMotor(LimitOfTravel, StepperM1M2) { MaximumSpeed = StepperMotor.MaximumPossibleSpeed, RampTime = 2.0 }; var axis2 = new AcceleratingStepperMotor(LimitOfTravel, StepperM3M4) { MaximumSpeed = StepperMotor.MaximumPossibleSpeed, RampTime = 2.0 }; var sequencer = new DualAxisSequencer(axis1, axis2); var randomGenerator = new Random(); while (true) { var target = randomGenerator.Next(LimitOfTravel); sequencer.RunInSequence(target, target); sequencer.BlockUntilSequenceComplete(); Thread.Sleep(5000); // A pause here just makes it easier to observe what is going on. } }
public static void Main() { // shield-specific setup. Uncomment one of the shield #define lines above. #if UseOnboardLedForDiagnostics Led = new OutputPort(Pins.ONBOARD_LED, false); #endif HBridge bridge1; HBridge bridge2; #if AdafruitV1Shield var shield = new AdafruitV1MotorShield(); shield.InitializeShield(); bridge1 = shield.GetDcMotor(1); bridge2 = shield.GetDcMotor(2); #elif AdafruitV2Shield var shield = new AdafruitV2MotorShield(); shield.InitializeShield(); bridge1 = shield.GetDcMotor(1); bridge2 = shield.GetDcMotor(2); #elif SparkfunArduMotoShield var shield = new SparkfunArdumoto(); shield.InitializeShield(); bridge1 = shield.GetHBridge(Connector.A, TargetDevice.Netduino); bridge2 = shield.GetHBridge(Connector.B, TargetDevice.Netduino); #elif LedSimulatorShield bridge1 = LedMotorSimulator.GetDcMotor(Pins.GPIO_PIN_D0, PWMChannels.PWM_ONBOARD_LED); bridge2 = LedMotorSimulator.GetDcMotor(Pins.GPIO_PIN_D1, PWMChannels.PWM_PIN_D6); #else throw new ApplicationException("Uncomment one of the shield #define statements"); #endif // Create the stepper motor axes and link them to the Adafruit driver. var motor1 = new DcMotor(bridge1); var motor2 = new DcMotor(bridge2); while (true) { var targetSpeed1 = randomGenerator.NextDouble() / 2.0 + 0.5; // range -1.0 to +1.0 var targetSpeed2 = randomGenerator.NextDouble() * 2.0 - 1.0; // range -1.0 to +1.0 motor1.AccelerateToVelocity(targetSpeed1); motor2.AccelerateToVelocity(targetSpeed2); Thread.Sleep(6000); } }