Hello there.
So I decided to start posting about this project I'm working on, not only to show off
but also because this way people can give me feedback and ideas that I maybe didn't have.
Also, be sure to check
this thread. There's a prize involved.
My project is basically a generic joystick software for DIYers. In its basic form, you load the code into an Arduino or Teensy or similar board, and you have a joystick with axis and buttons. Period.
But, said joystick also supports profiles in the fashion of a CH or
Saitek or Thrustmaster controller. You don't need to, but if you want, you can write a profile to do some convoluted stuff and save it to a file. You then upload the one you want before playing.
Now, the philosophy here is "make easy things, easy, and complicated things, easy-ish" ideally, it should hide enough that you don't need to learn things you don't need. A person that knows nothing about electronics or programming should be able to make a simple controller without much effort and then go on from there if he wants to build something more complex.
To that end, the firmware should handle pretty much anything, leaving the user only a small work to do, and probably automateable, say with a wizard of some sort. While at the same time it should allow tinkering with it so more knowledgeable folks or without girlfriends
can waste their time building something more advanced.
And here's where I am right now. I have the basic firmware, it handles inputs and everything on its own, the only thing you have to do right now is a little coding to feed the inputs to it. Once the input states are loaded, the firmware is able to interpret them to send the presses to the computer or, if a profile is loaded, process that and do what's needed.
Speaking of profile. My previous project (
linky) had this same functionality. The language in which you wrote these profiles was nice and simple... and not that powerful. And that's the thing. I'd like this new one to be simple for simple things, but more powerful if needed. My goal is "It doesn't look like a programming language at first, but you must be able to write a simple game with it". I'm set in my ways.
That's the most basic profile you can do. Two buttons, one sends Ctrl-A and the other sends F2. Buttons not specified, if any, will just report to the computer as a normal joystick button.
Also, that ":controller: 'JOYPRJ1'" part is important.
My idea here is that you might want to have more than one controller. I my self am planing on having at least 2. My already built panel, upgraded to the new firmware, and either a trim panel, or a UFC panel for Falcon.
The PC software has to be able to identify which device is which so it loads the profile to the correct controller. To that effect, you have to write an INI file for each of your controller types. In this case, you would have a file called "joyproj1.ini" somewhere with the lines:
The profiler will read this file to know what inputs you have available and their types ("onoff" being a simple push button). So when you say "[BTN_1]" it knows that there's such a thing as BTN_1 and that it is a pushbutton.
All this is pretty much just day dreaming at this point. But I don't see why I couldn't pull it off... I hope.