public AdafruitDCMotor(byte num, AdafruitMotorShield adafruit_MotorShield)
        {
            motornum = num;
            ms       = adafruit_MotorShield;

            if (num == 0)
            {
                PWMpin = Pin.M1pwr;
                IN2pin = Pin.M1in2;
                IN1pin = Pin.M1in1;
            }
            else if (num == 1)
            {
                PWMpin = Pin.M2pwr;
                IN2pin = Pin.M2in2;
                IN1pin = Pin.M2in1;
            }
            else if (num == 2)
            {
                PWMpin = Pin.M3pwr;
                IN2pin = Pin.M3in2;
                IN1pin = Pin.M3in1;
            }
            else if (num == 3)
            {
                PWMpin = Pin.M4pwr;
                IN2pin = Pin.M4in2;
                IN1pin = Pin.M4in1;
            }
        }
예제 #2
0
        public static void Run()
        {
            var shield = new AdafruitMotorShield();
            var robot  = new TwoWheeledRobot(shield.GetMotor(1), shield.GetMotor(2));

            new SineWave(0.1, 0.5, 0.5, updateFrequency: 9).Output.ConnectTo(robot.SpeedInput);
            new SineWave(0.5, 0.333, 0, updateFrequency: 11).Output.ConnectTo(robot.DirectionInput);
        }
예제 #3
0
        public static void Main()
        {
            Debug.Print("test app run");

            var sh  = new AdafruitMotorShield();
            var st1 = sh.GetStepper(1);

            st1.PerformSteps(1000, Direction.FORWARD);
            st1.PerformSteps(1000, Direction.BACKWARD);
            st1.PerformSteps(1000, Direction.FORWARD);
            st1.PerformSteps(1000, Direction.BACKWARD);
            st1.PerformSteps(1000, Direction.FORWARD);
            st1.PerformSteps(1000, Direction.BACKWARD);
            //var st2 = sh.GetStepper(2);
            //st2.PerformSteps(100, Direction.FORWARD);
        }
        private static IDeviceDelegateOneStep PrepareOneStepDelegate(AdafruitMotorShield ms, byte motorNum, OperationMode operationMode)
        {
            var stepper = ms.GetStepper(motorNum);

            stepper.SetOperationMode(operationMode);
            IDeviceDelegateOneStep moveRaw = (steps) => {
                if (steps >= 0)
                {
                    stepper.PerformStep(Direction.FORWARD);
                }
                else
                {
                    stepper.PerformStep(Direction.BACKWARD);
                }
            };

            return(moveRaw);
        }
        private static void InitializeGCodeParser()
        {
            settings = new Settings();
            settings.OneStepZ_Angle_Positive = 30;
            settings.OneStepZ_Angle_Negative = 15;

            var servo = new Servo(
                PWMChannels.PWM_PIN_D10,
                new ServoConfig(0, 180, 500, 2500, 50));

            servo.RotateTo(15);
            Thread.Sleep(500);
            servo.RotateTo(35);

            var motorShield = new AdafruitMotorShield();
            IDeviceDelegateOneStep oneStepX = PrepareOneStepDelegate(motorShield, 1, OperationMode.FullStep);
            IDeviceDelegateOneStep oneStepY = PrepareOneStepDelegate(motorShield, 2, OperationMode.FullStep);
            IDeviceDelegateOneStep oneStepZ = (steps) =>
            {
                var a = servo.Angle;

                if (steps >= 0)
                {
                    servo.RotateTo(settings.OneStepZ_Angle_Negative);
                }
                else
                {
                    servo.RotateTo(settings.OneStepZ_Angle_Positive);
                }

                if (a != servo.Angle)
                {
                    Thread.Sleep(500);
                }
            };
            IDeviceDelegateStop startX = () => {  };
            IDeviceDelegateStop startY = () => {  };
            IDeviceDelegateStop startZ = () => {
                servo.RotateTo(settings.OneStepZ_Angle_Negative);
                Thread.Sleep(500);
                servo.RotateTo(settings.OneStepZ_Angle_Positive);
                Thread.Sleep(500);
                servo.RotateTo(settings.OneStepZ_Angle_Negative);
                Thread.Sleep(500);
                servo.RotateTo(settings.OneStepZ_Angle_Positive);
            };

            IDeviceDelegateStop stopX = () => { motorShield.GetStepper(2).ReleaseHoldingTorque(); };
            IDeviceDelegateStop stopY = () => { motorShield.GetStepper(1).ReleaseHoldingTorque(); };
            IDeviceDelegateStop stopZ = () => { servo.RotateTo(settings.OneStepZ_Angle_Negative); };

            var device = new XYZGantryDevice();

            device.SetStepX(oneStepX);
            device.SetStepY(oneStepY);
            device.SetStepZ(oneStepZ);
            device.SetStartX(startX);
            device.SetStartY(startY);
            device.SetStartZ(startZ);
            device.SetStopX(stopX);
            device.SetStopY(stopY);
            device.SetStopZ(stopZ);

            device.Calibrate(25f, 25f, 1);


            var machine = new GCodeMachine(device);

            parser = new GCodeParser(machine);
        }