So I said in my last update that I'd document the creation of my arcade stick. I was planning on doing it as I made it, but that didn't really happen. In fact, I finished it almost immediately after posting the last update, but since it's good practice to document, and maybe someone may be interested in reading it, I'll document it anyway.

So, it began, as I said in the last update, with my friend Javaguru telling me to build my own arcade stick, since I wanted one. He recommended me to use an Arduino, for which I found the amazing library "UnoJoy" which is THE library for creating game controllers with Arduinos. I really doubted how easy it would be, but he assured me I could do it. So, I began deciding on a layout to use, and I went with the rather standard 8 button layout, like this one. I also decided to get 3 more buttons, one for Select, one for Home, and one for Start. The home button functions as the Home button on PS3, and as a bonus "whatever you want button" on PC, such as adding coins in MAME. I decided to choose colors similar to the ones they use in Skullgirls. The buttons are Sanwa OBSF 30mm buttons, and the stick is a Sanwa JLF-TP-8YT, which are both amongst the most popular in both buttons and sticks. In fact, many of the Street Fighter arcade machines in Japan use the same Sanwa sticks. I had to get a lot of materials as well, such as wires and tools. Honestly, had I known how much tools and things I needed before starting the project, I probably wouldn't have done it - I don't regret it though, because I have learnt A LOT. I needed wire strippers, a crimper, crimps, very specific wire, a lot of buttons and the stick itself. Also, living in Sweden, it's a hell to gather these tools and materials. In fact, I had Javaguru gather it up in the US and then ship it over to me to avoid expensive shipping.

Now, one thing that you should be wondering at this point. How have I not mentioned what container the stick should have? Will I be making a nice wooden box for it? Or maybe fitting it inside some sort of plastic box? Nope.
Cardboard. Yes. That's right. I know nothing about woodwork and I know few that do, so that was out of the question, and it takes a lot of planning to design one properly. So I just picked a random cardboard box in my house and decided to use that.

So, after a few weeks of waiting, all parts were gathered - and so it began...almost.
I grabbed my cardboard box, and then I realized..I had no way of getting the buttons in..nor the stick for that matter. I tried forcing holes through the cardboard by just pushing the buttons (so smart -.-) which evidently just ruined the entire thing. I tried cutting holes using knives and scissors. But nope. You NEED a drill for this. And a 30mm hole drill bit - and of course, I have no drill. I decided to pick one up, as I'll definitely be needing it again in the future. So..when I finally had everything (for real this time), it could finally begin.
Drilling cardboard might sound like it'd be really easy..or really hard, because it's a soft material, it should be easy, but it's also easy to shred away too much if you're not careful, which became apparent, as I fucked up on two boxes. Then after a bit of practice, I learnt how to do it decently, and with the holes in place, the Sanwa buttons literally just snapped right in and they sit there PERFECTLY. In order for them to be removed you need to push the two pins on the sides of the buttons from below, simple but genius design.
Then for the stick..I used a ruler to measure and draw the distances between the points where I'd put the screws and bolts, then used a pencil to just pop a tiny hole for the screws to fit in, then tightened them with bolts from the other side, and it sits perfectly as well. Great. Now, the tedious part.

With all components in place, only two things remain. The wiring. And coding. This being my first "major" project, I decided to play it easy and safe. Rather than doing it the good way of just putting the Arduino in there and daisy chaining the ground and then hooking the inputs individually, I stuck an entire breadboard along with the Arduino. I'm WELL AWARE it isn't the optimal way, but it's a lot easier for a beginner and gives you a lot of room for wiring, which I needed, especially since I didn't have the exact wire I needed.

After a few hours of crimping and connecting, crimping and connecting, the wiring was done. Not too hard, just tedious. Then for the last and easiest part, the coding. Programming the Arduino is rather simple, and UnoJoy has a lot of good examples and references, so it was just a matter of specifying which pins should be linked to which buttons, and here is the first result. This version has some problems. It's way too tall. It's really annoying and bad for the wrists to have to be held so high up, and if I didn't happen to have a DXRacer with adjustable arm rests, it would had been unusable. I had it like this for a few days, then I decided to make some fixes. As you might have seen in the picture, I actually forgot to put in the Select, Home and Start buttons, so I made 3 new holes, put 'em in there, did some more crimping and wiring and that's that for the buttons. I also decided to simply take some scissors and cut away about half the height of the box to make it more comfortable, which REALLY helped. I actually find it to be properly usable, I can have it standing on the table or have it in my lap, and it works great. Here are some pictures; picture uno, picture dos, and I might as well show you the inside. PLEASE NOTE that it IS NOT PRETTY, and if you are a perfectionist or have some form of OCD, maybe just don't look - that is actually the wiring from the first model. It is much worse in the second one, mainly because of less space, but also because of the added buttons - brace yourselves. Of course, probably the ugliest part about it, is the ghetto way I've "attached" the Arduino and the breadboard. Literally just tried forcing it with duct tape and blu tack. I should had gotten some screws and bolts for it. Maybe I will some day.

That's pretty much it. It works perfectly, on PC, Mac and PS3. It has one glaring issue which you might have already discovered. Why in gods name is the USB port on the front of it? Good question. The answer is poor planning. I did not account for the space of the Arduino when putting the other parts in, and this was the only position I could fit it in - but hey, it still works well, and with an angled USB cable it doesn't even matter!
Of course, for the next one, I will be sure to plan better.

That's it. Thanks for reading! <3
~ Shadowfied