Class describing motor's state.
        public static nxt_result motor_degree(NXTBrick.Motor motor, int degree)
        {
            nxt_result result = new nxt_result();
            NXTBrick.MotorState motorState = new NXTBrick.MotorState();
            if (motor == NXTBrick.Motor.A)
            {
                // prepare motor's state to set
                motorState.Power = (sbyte)speed_motors[0];
                motorState.TurnRatio = (sbyte)speed_motors[0];
            }
            if (motor == NXTBrick.Motor.B)
            {
                // prepare motor's state to set
                motorState.Power = (sbyte)speed_motors[1];
                motorState.TurnRatio = (sbyte)speed_motors[1];
            }
            if (motor == NXTBrick.Motor.C)
            {
                // prepare motor's state to set
                motorState.Power = (sbyte)speed_motors[2];
                motorState.TurnRatio = (sbyte)speed_motors[2];
            }
            // TODO If al motor's on handel correct speed
            if (motor == NXTBrick.Motor.All)
            {
                // prepare motor's state to set
                motorState.Power = (sbyte)speed_motors[0];
                motorState.TurnRatio = (sbyte)speed_motors[0];
            }
            motorState.Mode = NXTBrick.MotorMode.On;
            motorState.Regulation = NXTBrick.MotorRegulationMode.Speed;
            motorState.RunState = NXTBrick.MotorRunState.Running;
            // tacho limit

            motorState.TachoLimit = degree;

            // set motor's state
            if (nxt.SetMotorState(motor, motorState) != true)
            {
                IrcBot.log += "Failed setting motor state\n";
                result.result = false;
                result.value = "Failed";
                return result;
            }
            result.result = true;
            result.value = "succed";
            return result;
        }
        public static nxt_result motor_off(NXTBrick.Motor motor)
        {
            nxt_result result = new nxt_result();

            NXTBrick.MotorState motorState = new NXTBrick.MotorState();

            // prepare motor's state to set
            motorState.Power = (sbyte)0;
            motorState.TurnRatio = (sbyte)0;
            motorState.Mode = NXTBrick.MotorMode.None;
            motorState.Regulation = NXTBrick.MotorRegulationMode.Speed;
            motorState.RunState = NXTBrick.MotorRunState.Idle;
            // tacho limit
            motorState.TachoLimit = 0;

            // set motor's state
            if (nxt.SetMotorState(motor, motorState) != true)
            {
                IrcBot.log += "Failed setting motor state\n";
                result.result = false;
                result.value = "Failed";
                return result;
            }
            result.result = true;
            result.value = "succed";

            return result;
        }
        /// <summary>
        /// StartCutting: Main Cutting Method. Before calling this method, be sure that the 3d machine is ready.
        /// </summary>
        /// <param name="calibrationOnly"></param>
        private void StartCutting(bool calibrationOnly)
        {
            MillingMachineManager myMillingMachineManager = new MillingMachineManager(AppDomain.CurrentDomain.BaseDirectory + @"\head-vise.obj");

             threeDMotorState = new NXTBrick.MotorState();

            // prepare motor's state to set
             threeDMotorState.Power = Convert.ToByte(powerUpDown.Text);
             threeDMotorState.TurnRatio = 0;
             threeDMotorState.Mode = ((modeOnCheck.IsChecked == true) ? NXTBrick.MotorMode.On : NXTBrick.MotorMode.None) |
                 ((modeBrakeCheck.IsChecked == true) ? NXTBrick.MotorMode.Brake : NXTBrick.MotorMode.None) |
                 ((modeRegulatedBox.IsChecked == true) ? NXTBrick.MotorMode.Regulated : NXTBrick.MotorMode.None);
             threeDMotorState.Regulation = regulationModes[regulationModeCombo.SelectedIndex];
             threeDMotorState.RunState = runStates[2];

            // Prepare sensor state
            if (nxt.SetSensorMode(GetSelectedSensor(),
              sensorTypes[BLUE_COLOR_SENSOR_STATE_INDEX],
              sensorModes[0], false) != true)
            {
                System.Diagnostics.Debug.WriteLine("Failed setting input mode");
            }

            List<Displacement> displacementList;

            if (calibrationOnly)
            {
                displacementList = myMillingMachineManager.GetVertexCalibrationListForMachineCoordinatesAsDisplacement();
            }
            else
            {
                displacementList = myMillingMachineManager.GetVertexListForMachineCoordinatesAsDisplacement();
            }

            foreach (Displacement v in displacementList)
            {
                // Run X axis motor

                int xDisplacement = Convert.ToInt32(v.x);

                if (RunMotorInAnAxis(2, xDisplacement))
                {
                    Thread.Sleep(Math.Abs(xDisplacement * 100));
                }

                //displayTxt.Text += xDisplacement + ",";

                // Z

                int zDisplacement = Convert.ToInt32(v.z);

                if (RunMotorInAnAxis(1, zDisplacement))
                {
                    Thread.Sleep(Math.Abs(zDisplacement * 100));
                }

                // This is the main rotating/cutting motor. We use actual vertex information rather than displacement information and
                // use color detector for returning back

                int yPosition;
                if (calibrationOnly)
                {
                    yPosition = Convert.ToInt32(v.y);
                }
                else
                {
                    yPosition = Convert.ToInt32(v.TargetVertex.y);
                }

                if (RunMotorInAnAxis(0, yPosition))
                {
                    Thread.Sleep(Math.Abs(yPosition * 10));

                    NXTBrick.SensorValues sensorValues;

                    do
                    {
                        // get input values
                        if (nxt.GetSensorValue(GetSelectedSensor(), out sensorValues))
                        {
                            validCheck.IsChecked = sensorValues.IsValid;
                            calibratedCheck.IsChecked = sensorValues.IsCalibrated;
                            sensorTypeBox.Text = sensorValues.SensorType.ToString();
                            sensorModeBox.Text = sensorValues.SensorMode.ToString();
                            rawInputBox.Text = sensorValues.Raw.ToString();
                            normalizedInputBox.Text = sensorValues.Normalized.ToString();
                            scaledInputBox.Text = sensorValues.Scaled.ToString();
                            calibratedInputBox.Text = sensorValues.Calibrated.ToString();
                        }
                        else
                        {
                            System.Diagnostics.Debug.WriteLine("Failed getting input values");
                        }

                        // Now go up until blue color is reached
                        threeDMotorState.Power = -1 * Convert.ToByte(powerUpDown.Text);
                        threeDMotorState.TachoLimit = 5;

                        // set motor's state
                        if (nxt.SetMotorState(GetSelectedMotorY(), threeDMotorState, false) != true)
                        {
                            System.Diagnostics.Debug.WriteLine("Failed setting motor state");
                        }

                        Thread.Sleep(Math.Abs(50));

                    } while (sensorValues.Raw < 250);

                }

            }
        }
Exemple #4
0
        // On motor "Set state" button click
        private void setMotorStateButton_Click( object sender, EventArgs e )
        {
            NXTBrick.MotorState motorState = new NXTBrick.MotorState( );

            // prepare motor's state to set
            motorState.Power = (sbyte) powerUpDown.Value;
            motorState.TurnRatio = (sbyte) turnRatioUpDown.Value;
            motorState.Mode = ( ( modeOnCheck.Checked ) ? NXTBrick.MotorMode.On : NXTBrick.MotorMode.None ) |
                ( ( modeBrakeCheck.Checked ) ? NXTBrick.MotorMode.Brake : NXTBrick.MotorMode.None ) |
                ( ( modeRegulatedBox.Checked ) ? NXTBrick.MotorMode.Regulated : NXTBrick.MotorMode.None );
            motorState.Regulation = regulationModes[regulationModeCombo.SelectedIndex];
            motorState.RunState = runStates[runStateCombo.SelectedIndex];
            // tacho limit
            try
            {
                motorState.TachoLimit = Math.Max( 0, Math.Min( 100000, int.Parse( tachoLimitBox.Text ) ) );
            }
            catch
            {
                motorState.TachoLimit = 1000;
                tachoLimitBox.Text = motorState.TachoLimit.ToString( );
            }

            // set motor's state
            if ( nxt.SetMotorState( GetSelectedMotor( ), motorState, false ) != true )
            {
                System.Diagnostics.Debug.WriteLine( "Failed setting motor state" );
            }
        }
 /**
  * This will set the motor on
  * @param motor type NXTBrick.Motor
  * @return nxt_result
  */
 public static nxt_result motor_on(NXTBrick.Motor motor, int degrees, int number)
 {
     //Debug.WriteLine("Set motor on");
     //Debug.WriteLine(motor);
     nxt_result result = new nxt_result();
     NXTBrick.MotorState motorState = new NXTBrick.MotorState();
     
     if (motor == NXTBrick.Motor.A)
     {
         // prepare motor's state to set
         motorState.Power = (sbyte)speed_motors[0];
         motorState.TurnRatio = 50;
     }
     if (motor == NXTBrick.Motor.B)
     {
         // prepare motor's state to set
         motorState.Power = (sbyte)speed_motors[1];
         motorState.TurnRatio = 50;
     }
     if (motor == NXTBrick.Motor.C)
     {
         // prepare motor's state to set
         motorState.Power = (sbyte)speed_motors[2];
         motorState.TurnRatio = 50;
     }
     // TODO If al motor's on handel correct speed
     if (motor == NXTBrick.Motor.All)
     {
         // prepare motor's state to set
         motorState.Power = (sbyte)speed_motors[0];
         motorState.TurnRatio = 50;
     }
     motorState.Mode = NXTBrick.MotorMode.On;
     
         motorState.Regulation = NXTBrick.MotorRegulationMode.Idle;
     
     motorState.RunState = NXTBrick.MotorRunState.Running;
     motorState.RotationCount = 0;
     // tacho limit
     motorState.TachoCount = 0;
     if (motorState.Power < 0)
     {
         motorState.TachoLimit = -degrees;
     }
     else
     {
         motorState.TachoLimit = degrees;
     }
     
     // set motor's state
     if (nxt.SetMotorState(motor, motorState) != true)
     {
         IrcBot.log += "Failed setting motor state\n";
         result.result = false;
         result.value = "Failed";
         return result;
     }
     result.result = true;
     result.value = "succed";
     return result;
 }
 private void RightForward()
 {
     NXTBrick.MotorState motorState = new NXTBrick.MotorState();
     motorState.Power = 70;
     motorState.TurnRatio = 50;
     motorState.Mode = NXTBrick.MotorMode.On;
     motorState.Regulation = NXTBrick.MotorRegulationMode.Speed;
     motorState.RunState = NXTBrick.MotorRunState.Running;
     motorState.TachoLimit = 360;
     nxt.SetMotorState(NXTBrick.Motor.B, motorState);
 }
        private void OneStepRight(int tacho)
        {
            NXTBrick.MotorState motorState = new NXTBrick.MotorState();

            motorState.Power = 75;
            motorState.TurnRatio = 100;
            motorState.Mode = NXTBrick.MotorMode.On;
            motorState.Regulation = NXTBrick.MotorRegulationMode.Speed;
            motorState.RunState = NXTBrick.MotorRunState.Running;
            motorState.TachoLimit = tacho;

            nxt.SetMotorState(NXTBrick.Motor.B, motorState);
        }
        private void MoveArm(int angle, int power, int turnRatio)
        {
            NXTBrick.MotorState motorState = new NXTBrick.MotorState();

            motorState.Power = power;
            motorState.TurnRatio = turnRatio;
            motorState.Mode = NXTBrick.MotorMode.On;
            motorState.Regulation = NXTBrick.MotorRegulationMode.Speed;
            motorState.RunState = NXTBrick.MotorRunState.Running;
            motorState.TachoLimit = angle;

            nxt.SetMotorState(NXTBrick.Motor.A, motorState);
        }
        private void LeftBackwards()
        {
            NXTBrick.MotorState motorState = new NXTBrick.MotorState();

            motorState.Power = -70;
            motorState.TurnRatio = -50;
            motorState.Mode = NXTBrick.MotorMode.On;
            motorState.Regulation = NXTBrick.MotorRegulationMode.Speed;
            motorState.RunState = NXTBrick.MotorRunState.Running;
            motorState.TachoLimit = 360;

            nxt.SetMotorState(NXTBrick.Motor.C, motorState);
        }