I’m thinking about making a custom joystick next year. I purchased some parts from Amazon. It’s pretty low cost. What I’m looking to accomplish would be to have a panel with lighted buttons, where the lights convey some information. We currently use a “fight stick” for some functions. (For those not familiar, it’s a box with buttons, and a nine position joystick. I think it got its name from use in the Mortal Kombat video game, but it might predate that specific game.)
I want something like a fight stick, but with buttons I can light from code. I want something that’s more like an industrial operator control panel, to convey important information to the driver through a medium other than the computer screen. I see that the joystick class in WPILib has a setOutputs() function, or a setOutput() function. I’m wondering if any teams have made use of such functions, and how. I am guessing that there is a standard inteface that those functions activate, but I don’t know what it is. I see in the WPILib source that the function just calls a corresponding function in the HAL, which I assume is the Hardware Abstraction Layer.
I read up a bit on what a standard joystick device USB interface is. There is capability for inputs and for outputs in the interface, but most of the description is for inputs, as we normally use them., to get positions of buttons or axes. (Or mouse and keyboard, which use the same interface in Windows.) I just wasn’t sure if there was an obvious way to make use of the setOutput() functions in the WPI Libraries.
For what it’s worth, the one thing that our team has used has been the rumble functions on game controllers. This year, there was feedback from the vision system to the operator. The Xbox controller would rumble when the shooter was ready to fire and alighned with the target. That worked great, but I don’t know how to make use of the other output functions.