Multiple autonomous modes

What methods are you guys using to switch between autonomous modes? I was thinking of using jumpers in the Digital/Analog ports but I’m pretty sure there’s a better way. What do you guys suggest?

I prefer to use a potentiometer with the modes labeled onto it. This only takes up one port, and is very easy to use. If you use jumper, you either have to reach into your cortex or have more extension cables coming out of what I’m sure is a crowded satanic snake pit for many teams. Otherwise, if you have a LCD screen, you could use that.

As far as I know, most teams use jumpers. It’s an easy method as long as you remember to put the jumpers in or take them out depending on the starting position of the robot.

I have always been one to use a potentiometer. if you leave a shaft with some kind of arrow on it that points to pre-marked areas you can pretty easily use it to toggle between 4 modes or even a few more.

Jumpers are pretty nice if you use extension cables so that you don’t have to reach in and plug directly into the microcontroller.


Jumpers are horrible, as they add to wire clutter and take away available sensor ports. Using a potentiometer is a much neater and better solution.

We are hoping to use a combination of Jumpers and a Potentiometer. Probably use Jumpers to specify the position on the field (Since there are only 4 options, this can be done with 2 Jumpers.), and a Potentiometer to select the autonomous mode we wish to run. And yes adding extension wires to make adding Jumpers easier is a must.


I like the pots, but only with a few (4-5 positions). Labels are your friend! The best was a pot and a servo. Process was:

  • Robot on in driver mode.
  • Set the POT, servo mimics the action. (This verifys the pot is working)
  • Set the pot to the correct value.
  • Pull knob (gear and shaft) off of the pot (to keep it from being banged up and moved)
  • Place robot
  • Power off
  • Connect controllers to tower
  • Power up sequence

I’ve only seen one robot in the wild with the LCD panel, are there many out there?

Personally I’ve seen a use for having multiple autonomous modes, but I’ve never had an urgent need to load more than one at a time…

I like using a limit switch and a zip tie. It’s a bit easier to use than a jumper.

Pot-plus-Servo is dead easy if you have a motor port you can use for the servo. I doubt that 5 positions is the true upper limit on the resolution a team can reliably use (even when in a hurry); but I understand that you have be increasely careful as you divide up the range.

A method I like even better is a pot plus LEDs; if you have some digital output ports available. Use the LEDs to report which choice has been dialed in. 4 LEDs will report/label 16 choices. Digital output ports are usually less scarce than the Motor Ports Servos consume.

However, even though I’m not an expert on the latest software templates and microcontrollers, I’m willing to guess that using Servos or LEDs for feedback requires turning the robot on and letting some software execute (use the Manual VEXNet Switch?) before you put the bot on the field. For that reason, a bank of 4 Limit Switches might be the 16-mode method some teams prefer. There is less uncertainty in Limit Switch settings than there is in Pot rotations; and consequently I/they wouldn’t be nervous about whether I had the limit switches set correctly.


We have had several robots use two or three limit switches with rubber bands looped around the frame to hold the arm(s) down. That usually gives enough auto choices, and doesn’t require finding jumpers that have been misplaced.

There is no need to use the VEXNet switch. Code put into the pre-autonomous of the template will execute as soon as the robot is turned on (and connected to the controller in the case of the cortex).

I absolutely hate using jumpers in and out of ports on the robot controller as a means of selecting an autonomous routine. Take a look at the document I uploaded to the Vex Code area on the topic of multi-autonomous. If you use limit switches with a bearing block, it becomes a simple dial to select on/off. They have the added advantages of:

[INDENT]Being mounted so they are accessible to the drivers,
Can be labeled so that the switch positions and routines are quickly identifiable
There’s no accidental plugging or unplugging of jumpers in the wrong port on the robot controller
[/INDENT]See the attached photo.

If you are using more than 4 routines then a potentiometer is definately the way to go even if you are not running short of I/O ports. A pot gives you a single dial to select multiple routines and only uses a single port. I have successfully used a pot to select up to 10 routines.
multi-a limits.jpg

We use the jumpers plugged into cable extensions. The jumpers are attached to the robot with rubber bands so they do not get lost. Each jumper cable is labeled with a 1 and 2. We have a card describing each autonomous routine, its number, and robot placement on the field. Kids plug in jumpers to add up to the specific routine. Ex no jumpers is Auton0, 1 and 2 plugged in is Auton3, etc. Very simple. Last year we used the LCD screen and it worked great, but programming took sime time. I will post the code if I can find it. Did not do it this year becuase of a new programmer and were originally under the assumption it did not work with the cortex.

As of now, we use a potentiometer to decide which program. The LEDs will light up according the corresponding resistance values in order to tell which program is going to be executed. This method is only temporary, until we get our LCD. :slight_smile:

The method I used a couple tournaments ago was two sensors. We used rubber bands to hold them down and decide the autonomous functions. This was a “on-the-spot” decision, as for our shaft encoder was not working (used to decide programs as well).

I haven’t tested this, but I have an idea of using one touch sensor to decide programs. First, a variable is declared and assigned a value of 0? When the sensor is pressed, add 1 to the variable and start a timer. When the sensor is pressed again, the value is increased by 1 and the timer is reset. Etc… Then, you can use an if or switch case to decide which programs are to be used that correspond to the value of the variable. Also create an if statement so that if the touch sensor is pressed and the time is greater 3 seconds(?), then the value is reset to 0.

We use a potentiometer and a limit switch. Limit switches used in binary fashion would work too.


There’s one very big reason why our team has to use jumpers.

Because we can’t **afford **any spare limit switches or potentiometers.

all we did for ours was have a limit switch. It was on one of our main supports and we just programmed it so that if it were pressed it would run one color, and vice versa. There may be better ways but thats how we did it and its been working great.

I don’t have much experience with jumpers, but I guess that would work. I hope It works well for you.


We use two pots for multiple autonomous modes, with two you can easily get up to eleven different modes. I say making it like a dial is a lot easier than using rubber bands on limit switches or bump sensors.