Esempio n. 1
0
        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.
            }
        }
Esempio n. 2
0
        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);
            }
        }