public static StepperMotor CreateStepperMotorControlWithAbsolutePositionSensing
        (
            AnalogSignal goToPositionSignal,
            AnalogSignal absolutePositionSensingSignal,
            Range minPositionRange,
            Range maxPositionRange,
            int numStepsInTravelRange,
            AnalogSignal outputLine
        )
        {
            var stepper = new StepperMotor
            {
                GoToPositionSignal      = goToPositionSignal,
                NumStepsInRangeOfTravel = numStepsInTravelRange
            };
            var minPositionReachedRE = new RangeEvaluator {
                Range = minPositionRange, In = goToPositionSignal
            };

            stepper.MinPositionReachedSignal = minPositionReachedRE.Out;
            var maxPositionReachedRE = new RangeEvaluator {
                In = goToPositionSignal
            };

            stepper.MaxPositionReachedSignal = maxPositionReachedRE.Out;
            stepper.PhysicalOutput           = outputLine;
            return(stepper);
        }
        public static StepperMotor CreateStepperMotorControlWithPhysicalBoundary(
            AnalogSignal goToPositionSignal,
            int numStepsInTravelRange,
            AnalogSignal outputLine
            )
        {
            var stepper = new StepperMotor
            {
                GoToPositionSignal      = goToPositionSignal,
                NumStepsInRangeOfTravel = numStepsInTravelRange,
                PhysicalOutput          = outputLine
            };

            return(stepper);
        }
        public static StepperMotor CreateStepperMotorControlWithBoundaryPositionSensing
        (
            AnalogSignal goToPositionSignal,
            int numStepsInTravelRange,
            DigitalSignal minPositionReachedSignal,
            DigitalSignal maxPositionReachedSignal,
            AnalogSignal outputLine
        )
        {
            var stepper = new StepperMotor
            {
                GoToPositionSignal       = goToPositionSignal,
                NumStepsInRangeOfTravel  = numStepsInTravelRange,
                MinPositionReachedSignal = minPositionReachedSignal,
                MaxPositionReachedSignal = maxPositionReachedSignal,
                PhysicalOutput           = outputLine
            };

            return(stepper);
        }