Controller for fixed positions for elevator and arm

We are trying to program our arm and elevator to travel to fixed positions but are running into trouble with having enough buttons on our two Xbox controllers To manage all the options. We have about 12 different positions right now between the arm and the elevator. Are there any alternative controllers that would make this easier?

The Logitech Extreme 3D Pro has 12 buttons, plus an 8 position POV stick and 3 axes (4 if you include the throttle axis). Should be enough buttons for your elevator plus whatever mechanisms you have.

Another option is to make your own custom button panel with exactly the number and position of buttons that you want. You can use a TI Launchpad with the FRC GamePad Tool to make it pretty simply. Any other microcontroller with the ability to be read as a Human Input Device will work, though.

2 Likes

All the buttons you could want.

1 Like

My team ran into the same issues. Our solution was to setup the lift with two buttons, one to move to the next height setpoint, and one to move to the previous, by having an array of our setpoints and cycling through them. I’m still slightly worried about how well it will work in the heat of competition, but our driver (who is also one of the programmers) seemed to be managing to keep up nearly effortlessly.

I am still hoping we can also go ahead and also make a button panel using an Arduino or Launchpad just in case it becomes necessary.

1 Like

Touchscreen driver station laptop with shuffleboard.

1 Like

You can minimize this with a state machine of some sort. For our team, we have buttons that toggle what you’re intaking (cargo, hatch), while other buttons set the position based on what we’re intaking. For example, on an xBox Controller, you can map the X button to toggle what you’re intaking and the A, B, Y buttons to set your elevator position to rocket ship low, medium, or high. The A, B, Y positions will be higher/lower depending on what state your intaking in and makes it easier for your operator to memorize while also reducing the number of physical buttons you need.

1 Like

This is exactly what we did and it works beautifully.

Note: If you go with ConditionalCommands for this, I’ve found that the condition is only checked when the command is first constructed (on robot bootup). I suggest a different way of doing this (maybe some logic in initialize() of a regular Command).

1 Like

In ConditionalCommand, the condition method to determine which command is called from initialize so it can be determined at runtime. However, there are many ways you could program it incorrectly such that it’s done in the constructor.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.