View unanswered posts | View active topics It is currently Thu Oct 23, 2014 4:02 am






Reply to topic  [ 8 posts ] 
WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES) 
Author Message
Rookie

Joined: Fri Oct 11, 2013 4:05 pm
Posts: 7
Post WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
we are trying to create a tank mode driving program

with motor a and b
controlling one side
for some reason only motor A is working

and d and c controlling the other
Code:
#pragma config(Hubs,  S1, HTMotor,  HTMotor,  none,     none)
#pragma config(Hubs,  S2, HTMotor,  HTMotor,  none,     none)
#pragma config(Hubs,  S3, HTMotor,  HTMotor,  none,     none)
#pragma config(Hubs,  S4, HTMotor,  HTServo,  none,     none)
#pragma config(Sensor, S1,     ,               sensorI2CMuxController)
#pragma config(Sensor, S2,     ,               sensorI2CMuxController)
#pragma config(Sensor, S3,     ,               sensorI2CMuxController)
#pragma config(Sensor, S4,     ,               sensorI2CMuxController)
#pragma config(Motor,  mtr_S1_C1_1,     motorA,        tmotorTetrix, openLoop, encoder)
#pragma config(Motor,  mtr_S1_C1_2,     motorB,        tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S1_C2_1,     motorE,        tmotorTetrix, openLoop, encoder)
#pragma config(Motor,  mtr_S1_C2_2,     motorO,        tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S2_C1_1,     motorC,        tmotorTetrix, openLoop, encoder)
#pragma config(Motor,  mtr_S2_C1_2,     motorD,        tmotorTetrix, openLoop, encoder)
#pragma config(Motor,  mtr_S2_C2_1,     motorJ,        tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S2_C2_2,     drillMotor,    tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S3_C1_1,     motorL,        tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S3_C1_2,     motorM,        tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S3_C2_1,     linearMotor1,  tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S3_C2_2,     linearMotor2,  tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S4_C1_1,     motorP,        tmotorTetrix, openLoop)
#pragma config(Motor,  mtr_S4_C1_2,     motorQ,        tmotorTetrix, openLoop)
#pragma config(Servo,  srvo_S4_C2_1,    servo1,               tServoStandard)
#pragma config(Servo,  srvo_S4_C2_2,    servo2,               tServoStandard)
#pragma config(Servo,  srvo_S4_C2_3,    servo3,               tServoNone)
#pragma config(Servo,  srvo_S4_C2_4,    servo4,               tServoNone)
#pragma config(Servo,  srvo_S4_C2_5,    servo5,               tServoNone)
#pragma config(Servo,  srvo_S4_C2_6,    servo6,               tServoNone)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

/////////////////////////////////////////////////////////////////////////////////////////////////////
//
//                           Tele-Operation Mode Code Template
//
// This file contains a template for simplified creation of an tele-op program for an FTC
// competition.
//
// You need to customize two functions with code unique to your specific robot.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////

#include "JoystickDriver.c"  //Include file to "handle" the Bluetooth messages.


/////////////////////////////////////////////////////////////////////////////////////////////////////
//
//                                    initializeRobot
//
// Prior to the start of tele-op mode, you may want to perform some initialization on your robot
// and the variables within your program.
//
// In most cases, you may not have to add any code to this function and it will remain "empty".
//
/////////////////////////////////////////////////////////////////////////////////////////////////////

void initializeRobot()
{
  // Place code here to sinitialize servos to starting positions.
  // Sensors are automatically configured and setup by ROBOTC. They may need a brief time to stabilize.

  return;
}


/////////////////////////////////////////////////////////////////////////////////////////////////////
//s
//                                         Main Task
//
// The following is the main code for the tele-op robot operation. Customize as appropriate for
// your specific robot.
//
// Game controller / joystick information is sent periodically (about every 50 milliseconds) from
// the FMS (Field Management System) to the robot. Most tele-op programs will follow the following
// logic:
//   1. Loop forever repeating the following actions:
//   2. Get the latest game controller / joystick settings that have been received from the PC.
//   3. Perform appropriate actions based on the joystick + buttons settings. This is usually a
//      simple action:
//      *  Joystick values are usually directly translated into power levels for a motor or
//         position of a servo.
//      *  Buttons are usually used to start/stop a motor or cause a servo to move to a specific
//         position.
//   4. Repeat the loop.
//
// Your program needs to continuously loop because you need to continuously respond to changes in
// the game controller settings.
//
// At the end of the tele-op period, the FMS will autonmatically abort (stop) execution of the program.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////

task main()
{
  initializeRobot();

     // wait for start of tele-op phase

  while (true)
  {
        getJoystickSettings(joystick);
   motor[motorA]=joystick.joy1_y2 * 100 / 127;//motor a moves with the second y toggle stick (leftside)
   motor[motorB]=joystick.joy1_y2 * 100 / 127;//motor b moves with the second y toggle stick as well(robot will go left or right)(lefttside)
}

{
   getJoystickSettings(joystick);
   motor[motorC]=joystick.joy1_y1 * 100/ 127; //motor c moves with the first y toggle stick(robot will go left or right)(rightside)
   motor[motorD]=joystick.joy1_y1 * 100 / 127;// motor D moves with the first y toggle stick if both sticks are moved at the same time they'll go in a uniform direction (rightside)
}//this is the function for driving


   while (true)
   getJoystickSettings(joystick);
   if(joy1Btn(4)==1)//button four controls the drill
   {
      motor[drillMotor]=100;//THIS IS THE CODE FOR THE DriLl
   }
   else
   {motor[drillMotor]=0;//drill remains off

   }
//this is the code for the dual fingers (servos will go 67 counts)
{
   getJoystickSettings(joystick);//button 1 to close
   if(joy2Btn(1)==1)
   {

   servo[servo1]=67;
   servo[servo2]=67;
}

else

{
   servo[servo1]=0;
servo[servo2]=0;

}}


if(joy2Btn(2)==1)
{
   servo[servo1]=-67;//button 2 to open
   servo[servo2]=-67;
}
   else

   {servo[servo1]=0;
   {servo[servo2]=0;}

{
   getJoystickSettings(joystick);
   motor[linearMotor1]=joystick.joy2_y1 * 100/127;                        //These 2 motors are for the linear slides to go up and down.
   motor[linearMotor2]=joystick.joy2_y1 * 100/127;
}
{
   getJoystickSettings(joystick);                                       //this motor is will be driving the pulley system.
   motor[motorJ]=joystick.joy2_y2 * 80/127;
}
}
}


   // Insert code to have servos and motors respond to joystick and button values.

    // Look in the ROBOTC samples folder for programs that may be similar to what you want to perform.
    // You may be able to find "snippets" of code that are similar to the functions that you want to

// perform



Last edited by JohnWatson on Fri Oct 18, 2013 5:38 pm, edited 1 time in total.

Added code tags for readability



Fri Oct 18, 2013 10:39 am
Profile
Site Admin
Site Admin
User avatar

Joined: Tue Oct 09, 2012 10:34 am
Posts: 192
Post Re: WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
Hi ferretman,
Try creating a simpler version of your program with only the parts that have the problem.

--Ryan

_________________
Ryan Cahoon
CMU Robotics Academy
RVW Software Developer

Robot Potato Head; Virtual NXT


Fri Oct 18, 2013 1:45 pm
Profile
Guru
User avatar

Joined: Sun Nov 15, 2009 5:46 am
Posts: 1347
Post Re: WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
Looks like you have a very complex motor setup. I thought there is a limit of eight Tetrix motors specified in the FTC game rules. I think you are exceeding that limit. Also, you can chain 4 motor controllers on one sensor port. That will free up some sensor ports for sensors. Like Ryan said, you need to try a simpler setup first. Once it's working, then you build up the complexity from there. Also check your motor wiring. If the wiring is wrong and does not match the pragmas, that could be the cause. I recommend hooking up only two motor controllers in one chain and make tank drive work before adding any other motor controllers.


Fri Oct 18, 2013 4:37 pm
Profile
Rookie

Joined: Fri Oct 11, 2013 4:05 pm
Posts: 7
Post Re: WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
Thank you for the input, so how would I go about simplifying? Do I simply make motor A work for two motors on the left and B work for two motors on the right? Also, would the placement of brackets be the source of the issue?


Sat Oct 19, 2013 12:01 am
Profile
Guru
User avatar

Joined: Sun Nov 15, 2009 5:46 am
Posts: 1347
Post Re: WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
For example, simplify your code to the following and make sure both motor A and B works first before adding anything else.
Code:
#pragma config(Hubs,  S1, HTMotor,  HTMotor,  none,     none)
#pragma config(Sensor, S1,     ,               sensorI2CMuxController)
#pragma config(Motor,  mtr_S1_C1_1,     motorA,        tmotorTetrix, openLoop, encoder)
#pragma config(Motor,  mtr_S1_C1_2,     motorB,        tmotorTetrix, openLoop)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

/////////////////////////////////////////////////////////////////////////////////////////////////////
//
//                           Tele-Operation Mode Code Template
//
// This file contains a template for simplified creation of an tele-op program for an FTC
// competition.
//
// You need to customize two functions with code unique to your specific robot.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////

#include "JoystickDriver.c"  //Include file to "handle" the Bluetooth messages.


/////////////////////////////////////////////////////////////////////////////////////////////////////
//
//                                    initializeRobot
//
// Prior to the start of tele-op mode, you may want to perform some initialization on your robot
// and the variables within your program.
//
// In most cases, you may not have to add any code to this function and it will remain "empty".
//
/////////////////////////////////////////////////////////////////////////////////////////////////////

void initializeRobot()
{
  // Place code here to sinitialize servos to starting positions.
  // Sensors are automatically configured and setup by ROBOTC. They may need a brief time to stabilize.

  return;
}


/////////////////////////////////////////////////////////////////////////////////////////////////////
//s
//                                         Main Task
//
// The following is the main code for the tele-op robot operation. Customize as appropriate for
// your specific robot.
//
// Game controller / joystick information is sent periodically (about every 50 milliseconds) from
// the FMS (Field Management System) to the robot. Most tele-op programs will follow the following
// logic:
//   1. Loop forever repeating the following actions:
//   2. Get the latest game controller / joystick settings that have been received from the PC.
//   3. Perform appropriate actions based on the joystick + buttons settings. This is usually a
//      simple action:
//      *  Joystick values are usually directly translated into power levels for a motor or
//         position of a servo.
//      *  Buttons are usually used to start/stop a motor or cause a servo to move to a specific
//         position.
//   4. Repeat the loop.
//
// Your program needs to continuously loop because you need to continuously respond to changes in
// the game controller settings.
//
// At the end of the tele-op period, the FMS will autonmatically abort (stop) execution of the program.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////

task main()
{
  initializeRobot();

     // wait for start of tele-op phase

  while (true)
  {
    getJoystickSettings(joystick);
    motor[motorA]=joystick.joy1_y2 * 100 / 127;//motor a moves with the second y toggle stick (leftside)
    motor[motorB]=joystick.joy1_y2 * 100 / 127;//motor b moves with the second y toggle stick as well(robot will go left or right)(lefttside)
  }
}


Sat Oct 19, 2013 7:20 am
Profile
Rookie

Joined: Fri Oct 11, 2013 4:05 pm
Posts: 7
Post Re: WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
oh ok thank you, I'll get back to you on the results


Sat Oct 19, 2013 9:35 am
Profile
Rookie

Joined: Fri Oct 11, 2013 4:05 pm
Posts: 7
Post Re: WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
Thanks for the help guys the program is now working 100%. It turned out that the brackets were locking the other segment of the code off. lololololololololol


Mon Oct 21, 2013 4:42 pm
Profile
Rookie

Joined: Wed Nov 06, 2013 5:18 am
Posts: 1
Post Re: WHAT'S WRONG WITH THIS PROGRAM HELP HALP (CRIES)
Like Ryan said, you need to try a simpler setup first. Once it's working, then you build up the complexity from there. Also check your motor wiring. If the wiring is wrong and does not match the pragmas, that could be the cause. I recommend hooking up only two motor controllers in one chain and make tank drive work before adding any other motor controllers.

_________________
http://www.actualtests.com/
https://en.wikipedia.org/wiki/Association_of_Chartered_Certified_Accountants
http://www.actualtests.com/exam-200-120.htm
http://www.amazon.com/The-American-College-University-History/dp/0820312843


Wed Nov 06, 2013 5:26 am
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 8 posts ] 

Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  



Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.