コード例 #1
0
        private void ConfigureChannels(StepperMotorIndex motorIndex)
        {
            switch (motorIndex)
            {
            case StepperMotorIndex.SM1:
                channels.AIn1 = 10;
                channels.AIn2 = 9;

                channels.BIn1 = 11;
                channels.BIn2 = 12;

                channels.PwmA = 8;
                channels.PwmB = 13;
                break;

            case StepperMotorIndex.SM2:
                channels.AIn1 = 4;
                channels.AIn2 = 3;

                channels.BIn1 = 5;
                channels.BIn2 = 6;

                channels.PwmA = 2;
                channels.PwmB = 7;
                break;
            }
        }
コード例 #2
0
        public void MakeStep(StepperMotorIndex motorIndex, MotorDirection direction, SteppingMode steppingMode = SteppingMode.FullSteps)
        {
            ConfigureChannels(motorIndex);

            UpdateCurrentStep(direction);

            UpdateChannels(steppingMode);
        }
コード例 #3
0
        public void Move(StepperMotorIndex motorIndex, MotorDirection direction, uint steps, SteppingMode steppingMode = SteppingMode.FullSteps)
        {
            var msDelay = RpmToMsDelay(Rpm, steppingMode);

            steps = GetTotalStepCount(steppingMode, steps);

            for (uint i = 0; i < steps; i++)
            {
                MakeStep(motorIndex, direction, steppingMode);

                Task.Delay(msDelay).Wait();
            }
        }
コード例 #4
0
        public void MoveWithSpeedAdjustment(StepperMotorIndex motorIndex, MotorDirection direction, uint steps, SteppingMode steppingMode = SteppingMode.FullSteps)
        {
            steps = GetTotalStepCount(steppingMode, steps);

            var speedRamp = SpeedRampHelper.GenerateTrapezoidalRamp(steps);

            for (uint i = 0; i < steps; i++)
            {
                MakeStep(motorIndex, direction, steppingMode);

                var msAutoDelay = RpmToMsDelay(speedRamp[i], steppingMode);

                Task.Delay(msAutoDelay).Wait();
            }
        }
コード例 #5
0
        private void StepperMotorTest(StepperMotorIndex motorIndex, SteppingMode steppingMode = SteppingMode.FullSteps)
        {
            if (stepperMotor.IsInitialized)
            {
                // Configure steps, and RPM
                const uint steps = 200;
                const byte rpm   = 20;

                // Set speed
                stepperMotor.SetSpeed(rpm);

                // Move motor forward
                stepperMotor.Move(motorIndex, MotorDirection.Forward, steps, steppingMode);
                //stepperMotor.MoveWithSpeedAdjustment(motorIndex, MotorDirection.Forward, steps, steppingMode);

                // ... and go back to initial position
                stepperMotor.Move(motorIndex, MotorDirection.Backward, steps, steppingMode);
                //stepperMotor.MoveWithSpeedAdjustment(motorIndex, MotorDirection.Backward, steps, steppingMode);
            }
        }