private int Move(GT.Interfaces.PWMOutput pwm, int position, int minPosition, int maxPosition, int pwmMin, int pwmMax)
        {
            position = position > maxPosition ? maxPosition : position;
            position = position < minPosition ? minPosition : position;

            Servo(pwm, GetPwmPulseValue(pwmMax, pwmMin, position));

            return(position);
        }
        public RoboticArmController(Extender extender, GT.Socket.Pin clawPin, GT.Socket.Pin armPin, uint pwmPulsePeriod)
        {
            if (extender == null)
            {
                throw new ApplicationException("robotic arm pwm extender not set up correctly");
            }

            _pwmPulsePeriod = pwmPulsePeriod;
            _clawPwm        = extender.SetupPWMOutput(clawPin);
            _armPwm         = extender.SetupPWMOutput(armPin);

            Reset();
        }
        public RoboticArmController(Extender extender, GT.Socket.Pin clawPin, GT.Socket.Pin armPin, uint pwmPulsePeriod)
        {
            if (extender == null)
            {
                throw new ApplicationException("robotic arm pwm extender not set up correctly");
            }

            _pwmPulsePeriod = pwmPulsePeriod;
            _clawPwm = extender.SetupPWMOutput(clawPin);
            _armPwm = extender.SetupPWMOutput(armPin);

            Reset();
        }
 private void Servo(GT.Interfaces.PWMOutput pwm, int pwmPulseHighTime)
 {
     pwm.SetPulse(_pwmPulsePeriod, (uint)pwmPulseHighTime);
 }