History of the arcaduino
The history of the arcaduino begins with having the idea of building a small game called ‘kamelenrace’ in dutch, or ‘camelrace’ in english.
The initial goal was to hook up 4 computer mice onto 1 computer, and have (up to) 4 players click as fast as they could (alternating on the 2 mousebuttons) to move their virtual camel (see screenshot).
However: using 4 keyboards was also impractical as it would allow players (other then you) to press your keys, and thus disrupting your game experience.
At this point somebody introduced me to the I-pac board, which could be used along with arcade cabinet buttons/switches to send keystrokes to the host computer. (Thanks to ‘Franky‘ for that!) So I got me the I-pac board, and some switches, and placed them into wooden planks that would sit on beer crates. This was in a way a closed source version of the arcaduino, with less functionality.
Because the I-pac board was kind of ‘messy’ to hook up (loads of long cables from each player board to the controller), I decided to find a more efficient way to hook them up.
I achieved this by connecting each set of 2 buttons to 1 network cable, and place the I-pac in an old switch. (Thanks to gunnie for the help with that! :)) (see picture)
So now the game was finished, but it was boring after a few games so I got to thinking “what else can I do with this setup?”, and quickly began thinking about making an arcade controller, after all: the I-PAC was build for that purpose :).
I also bought a joystick to complete my arcade set, now I had a joystick and some buttons, the only thing missing was something to build them in. Building an arcade cabinet wasn’t an option, it’s too big, and I wouldn’t play it often anyay… So I needed something smaller.
This came in the form of a plastic storage box. The wooden plate would now rest on the box, and if no longer needed, could be stored inside it (see picture). This was also convenient to place my laptop upon :).
I was actually pretty happy with the result, and wanted to create something that was better, more efficient, that looked a bit more professional then the storage boxes. I also had trouble re-programming the keys to fit my needs, the I-pac has software that repaces certain keys to others, but I couldn’t get it to work properly, and it wasn’t practical.
By this time I also got to play with the arduino leonardo, and found out they can send out keystrokes via the usb interface, and read the state of pushbuttons (i.e: that is the same as what the i-pac does). So I got working on designs and ideas, and the goals were:
- Must be easy to re-produce
- Up to 4 players simultaniously
- Easy to configure
- Plug and play
Yes: hackable! if someone wanted to use a different design then me, they should be able to do so quickly without doing much re-wiring or even worse: re-programming large chunks of the code. However: if they wanted to re-program the code, they should also be able to do so. Add functionalities, or remove them, it’s all up to you!
So I got to work on writing the code, making a list of all components needed, making sure the goals were met without compromising others, and the result was a breadboard with some buttons to test. It worked! The arcaduino was born.
In the first version of the code, you needed to re-flash your arduino to indicate which player profile you wanted to use. This was not practical so I added 4 LED’s to show which profile was selected, and a button to make that selection. This was the arcaduino code version 1.0.
While still thinking about where to house this all in, I tought of another function that could be handy:
What if the game you want to play requires a mouse?
So I added mouse support in code revision 2.0, it adds a toggle switch that allows you to turn the joystick into a mouse instead of sending out keys, and you can program the buttons to perform mouse clicks as well. To enhance the mouse feature, it ‘speeds up’ the longer you hold it down, this way you get a more precise and accurate usage of the mouse in-game.
At the moment there is a working prototype, which doesn’t look good, but works as it should :). It’s a great help for testing and measuring the next version.