|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: Multiple Autons
You can definitely do it from the Classmate. Just go to the I/O tab and select one or more of the digital inputs. In the code, use station.getInstance().getDigitalInput(number) to get the value of the input, where station is the name of the DriverStation object. There are 10 digital inputs, so you can have 2^10-1=1023 different autonomous programs.
|
|
#2
|
|||
|
|||
|
Re: Multiple Autons
where do you assign the switch between the autons in the code do you do it in disabled periodic or robot init
|
|
#3
|
|||
|
|||
|
Re: Multiple Autons
Quote:
Also, 1024 different autonomous programs, you only subtract 1 to get the highest number you can represent, so you can represent 0-1023, which is 1024 integers total. Last edited by LukeS : 08-03-2010 at 21:04. Reason: typo |
|
#4
|
|||
|
|||
|
Re: Multiple Autons
You can in disabled. We use a push button on our control board to cycle through autonomous modes. The dashboard gives a read out of the current selection.
|
|
#5
|
||||
|
||||
|
Re: Multiple Autons
Quote:
Quote:
|
|
#6
|
|||
|
|||
|
Re: Multiple Autons
Ok i really have very little preference to how the switch is made i am just looking for help with the code. if you can tell me anyway to set and switch between autons that would be fantastic
|
|
#7
|
|||
|
|||
|
Re: Multiple Autons
Here is a sniippet of our code that handles auton switiching. It is sanitized, and not all variables are shown declared.
Switching takes place during disabledPeriodic. Care should be taken in teleopinit to clean up after autonomous before heading into teleop mode so that nothing unexpected happens. Code:
public void autonomousPeriodic()
{
this.getWatchdog().feed();
switch (autoMode)
{
case 1:
// Add kick three balls in goal code here
message("Performing auto in FAR field");
break;
case 2:
// Add kick two balls in goal code here
message("Performing auto in MID field");
break;
case 3:
// Add kick one ball in goal here
message("Performing auto in NEAR field");
break;
default:
// Auto program isn't working so do this instead
message("Doing nothing");
break;
}
}
public void disabledInit()
{
this.getWatchdog().feed();
}
public void disabledPeriodic()
{
this.getWatchdog().feed();
// Using joystick trigger to switch modes
if (!autoTrigger && js_right.getRawButton(1))
{
if (autoMode < 4)
{
autoMode++;
} else
{
autoMode = 1;
}
autoTrigger = true;
} else if (!js_right.getRawButton(1))
{
autoTrigger = false;
}
// Update message at driverstation to reflect current
// mode selection
switch (autoMode)
{
case 1:
message("1. Autonomous for FAR field");
break;
case 2:
message("2. Autonomous for MID field");
break;
case 3:
message("3. Autonomous for NEAR field");
break;
default:
message("Do Nothing...in any position!");
break;
}
}
public void message(String s)
{
String temp = s;
if (!temp.equals(userMessage))
{
//System.out.println(s);
userMessage = temp;
int length = s.length();
//int numRows = 1;
String[] row = new String[6];
for (int i = 0; i < 6; i++)
{
row[i] = "";
}
if (length > 20)
{
int backwards = 5;
int index = 0;
// Each line can only hold 21 characters, so
// break the line in reverse at a space.
// This will end up not working if a message is STILL
// too long. Program must ensure not to send messages
// too long.
while (length > 20 && backwards >= 0)
{
index = temp.lastIndexOf(' ', 20);
row[backwards] = temp.substring(index);
row[backwards].trim();
temp = temp.substring(0, index).trim();
length = temp.length();
backwards--;
}
row[backwards]=temp;
} else
{
row[5] = temp;
}
// Erase the message box
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kMain6, 1, " ");
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser2, 1, " ");
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser3, 1, " ");
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser4, 1, " ");
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser5, 1, " ");
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser6, 1, " ");
DriverStationLCD.getInstance().updateLCD();
// Now write the data
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kMain6, 1, row[0]);
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser2, 1, row[1]);
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser3, 1, row[2]);
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser4, 1, row[3]);
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser5, 1, row[4]);
DriverStationLCD.getInstance().println(DriverStationLCD.Line.kUser6, 1, row[5]);
DriverStationLCD.getInstance().updateLCD();
}
}
Last edited by TubaMorg : 10-03-2010 at 18:21. |
|
#8
|
||||
|
||||
|
Re: Multiple Autons
Since it doesn't seem like you're the programmer who coded autonomous, get that programmer to do it. It's not a good idea to mess around with somebody else's code because it's very easy to break something or make an error that's super hard to fix.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| [FTC]: Multiple Programs or One Program with Multiple Auto Modes | kevin51292 | FIRST Tech Challenge | 4 | 02-01-2009 20:37 |
| Hosting multiple sites in multiple VMs | EHaskins | Website Design/Showcase | 6 | 22-12-2007 01:09 |
| Multiple Auton's | Joe Clohessy | Programming | 17 | 11-02-2005 18:46 |
| Multiple RCX's | Noah Melamed | FIRST Lego League | 1 | 25-01-2005 15:55 |