{"id":273,"date":"2016-09-21T20:57:43","date_gmt":"2016-09-22T01:57:43","guid":{"rendered":"http:\/\/morsepower.net\/?p=273"},"modified":"2016-09-21T21:00:28","modified_gmt":"2016-09-22T02:00:28","slug":"buttons-and-sticks","status":"publish","type":"post","link":"https:\/\/morsepower.net\/?p=273","title":{"rendered":"Buttons and Sticks"},"content":{"rendered":"<p>It\u00e2\u20ac\u2122s about time I created something noteworthy, after joining a <strong><a href=\"http:\/\/lowellmakes.com\/\">Lowell Makes<\/a><\/strong> over two years ago.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-293\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMG_7924_crop.jpg\" alt=\"img_7924_crop\" width=\"3260\" height=\"1416\" \/><\/p>\n<p>Like most DIY posts nowadays, I\u00e2\u20ac\u2122m leading off with the finished product: a mostly functional arcade control panel!<\/p>\n<p>I had a ton of help in basic woodworking skills from a few members in the makerspace.<\/p>\n<ul>\n<li>Jack Walsh &#8211; How to cut shit on the table saw without murdering myself<\/li>\n<li>Bill Taylor &#8211; Jigsawing for dummies<\/li>\n<li>Steve Birmingham &#8211; More tablesaw tutelage, plus making my mitred edges actually fit<\/li>\n<li>Chris Donius &#8211; Helping me put the damned thing together<\/li>\n<li><a href=\"https:\/\/www.facebook.com\/givewavestudios\"><strong>Castro-Yves Arboite<\/strong><\/a> &#8211; Helping me with pictures and general artistic guidance<\/li>\n<\/ul>\n<p>I sourced the parts from all over.<\/p>\n<ul>\n<li>Birch plywood &#8211; Home Depot<\/li>\n<li>Buttons, Joysticks &#8211; Sparkfun<\/li>\n<li>Track ball and plate &#8211; E-bay auctions<\/li>\n<li>T-molding &#8211; T-molding.com<\/li>\n<\/ul>\n<p>With the aid and advice of my fellow makerspace members, this was built almost entirely from scratch. \u00c2\u00a0Here\u00e2\u20ac\u2122s a quick rundown of the build process.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-275\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0413.jpg\" alt=\"imag0413\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>I tested the button on cardboard. \u00c2\u00a0I don\u00e2\u20ac\u2122t remember why I thought this would be important or useful. \u00c2\u00a0But I did.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-276\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0415.jpg\" alt=\"imag0415\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>My initial plan was to trace out the guide for the top panel layout on cardboard and cut out the holes. \u00c2\u00a0But it turns out cutting a straight line on corrugated board is fucking impossible and I just gave up and went straight to pencil on the wood.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-277\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0420.jpg\" alt=\"imag0420\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>I was told later that I could have made the process easier by tracing a guide and then folding it over halfway, seeing as it\u00e2\u20ac\u2122s symmetrical. \u00c2\u00a0Oh well. \u00c2\u00a0Live and learn.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-285\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0488.jpg\" alt=\"imag0488\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>Finished top panel. \u00c2\u00a0Everything was going smoothly (pun intended) but then I bungled the trackball hole jigsawing, and got mad splintering everywhere. \u00c2\u00a0<a href=\"https:\/\/morsepower.net\/?p=186\"><b>Yeah, that again<\/b><\/a>. \u00c2\u00a0A little putty should patch it up. \u00c2\u00a0It\u00e2\u20ac\u2122s getting painted (or maybe even laminated) later, so I\u00e2\u20ac\u2122m really trying not to sweat it. \u00c2\u00a0The Forstner cuts for the button and joystick holes came out gorgeous, though, didn\u00e2\u20ac\u2122t they?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-281\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0477.jpg\" alt=\"imag0477\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>The sides all meet at \u00e2\u20ac\u0153mitred\u00e2\u20ac\u009d edges, with the intention being to show no end grain wood. \u00c2\u00a0This worked, but was a <b>gigantic fucking pain in the ass<\/b> because to fit this together, the angles need to be almost perfect. \u00c2\u00a0Like, to the millimeter. \u00c2\u00a0You can see I didn\u00e2\u20ac\u2122t get it quite exactly right, but settled for a level of imperfection that\u00e2\u20ac\u2122s invisible to the user (messy insides).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-280\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0476.jpg\" alt=\"imag0476\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>The panel needs to be tilted towards the player. \u00c2\u00a0So the back is taller than the front, and the sides have angled top edges. \u00c2\u00a0Wound up doing more trigonometry than I would have expected.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-282\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0478.jpg\" alt=\"imag0478\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>The base. \u00c2\u00a0The little pieces along the side are called \u00e2\u20ac\u0153ledger boards\u00e2\u20ac\u009d and they are what I used to attach the base to the sides without exposing any screw holes. \u00c2\u00a0I grabbed them from random scraps around the space, which is why they are all different colors. \u00c2\u00a0One of them turned out to be maple, which apparently has the same chemical properties as adamantium. \u00c2\u00a0Whoops.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-287\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0515.jpg\" alt=\"imag0515\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>Attaching the sides to the base via the ledger boards. \u00c2\u00a0Chris bled on it. \u00c2\u00a0My fault, really, for picking those pieces out of particularly dense wood.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-288\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0516.jpg\" alt=\"imag0516\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>Nothing a little sanding couldn\u00e2\u20ac\u2122t fix!<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-291\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0557.jpg\" alt=\"imag0557\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>Did I say the top was finished?\u00c2\u00a0 Because it wasn&#8217;t.\u00c2\u00a0 I had to use a router to cut out some of the wood around the joystick holes, on the underside. \u00c2\u00a0This is necessary to give the joysticks a little more height, by giving it \u00e2\u2026\u0153\u00e2\u20ac\u009d of wood to get through, instead of \u00c2\u00be\u00e2\u20ac\u009d. \u00c2\u00a0The one on the left came out perfectly. \u00c2\u00a0The one on the right went to shit because the router bit wasn\u00e2\u20ac\u2122t properly tightened and dropped a smidge at the last second. \u00c2\u00a0Oh well, another invisible flaw.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-290\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMAG0556.jpg\" alt=\"imag0556\" width=\"2688\" height=\"1520\" \/><\/p>\n<p>Stand proud, little stick.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-292\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMG_7924.jpg\" alt=\"img_7924\" width=\"3264\" height=\"2448\" \/><\/p>\n<p>I didn\u00e2\u20ac\u2122t take enough pictures of the rest of the assembly process, but it\u00e2\u20ac\u2122s pretty straightforward. \u00c2\u00a0Hinges hold the top in place along the back edge. \u00c2\u00a0Buttons and joysticks take their places: the buttons are just tightened by plastic nuts and are easy enough to remove, the joysticks are screwed from below.<\/p>\n<p>I tried to spray paint the exterior, but apparently some part of the spray painting process escapes me because the paint came out in shitty bursts and so it kind of came out looking like spotty garbage. \u00c2\u00a0I\u00e2\u20ac\u2122ll go over it again later. \u00c2\u00a0Kind of gives it a beat up aesthetic in the meantime.<\/p>\n<p>Now, how does it all work?<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-294\" src=\"https:\/\/morsepower.net\/wp-content\/uploads\/IMG_7925.jpg\" alt=\"img_7925\" width=\"3264\" height=\"2448\" \/><\/p>\n<p>The buttons connect to a board called the <a href=\"https:\/\/www.ultimarc.com\/ipac1.html\"><b>IPAC-32<\/b><\/a> as TTL. \u00c2\u00a0Which basically means there\u00e2\u20ac\u2122s no need for me to worry about impedance or current or any of that analog crap.\u00c2\u00a0 One terminal of each button and joystick switch gets sent to a dedicated terminal on the IPAC, and the other ones share the same ground wire on a loop. \u00c2\u00a0The IPAC converts the On\/Off button transitions into simple keyboard scan codes, and connects to the host machine via USB. \u00c2\u00a0So, as far as the host sees, it\u00e2\u20ac\u2122s just getting keyboard presses\/releases from the panel.<\/p>\n<p>The nice thing about the end result is that it\u00e2\u20ac\u2122s so encapsulated. \u00c2\u00a0It\u00e2\u20ac\u2122s only output is a USB cable, so it really just looks like any other plug-in peripheral. \u00c2\u00a0As such, it was easy to test. \u00c2\u00a0Just plug in a Raspberry Pi with some emulation software on it, configure it for keyboard input (harder than it should have been), and give it a go. \u00c2\u00a0A few minutes later, Snake Man was toast and I had myself a confirmed functioning control panel.<\/p>\n<p>I may add some video or stills of gameplay in action, if people are interested.<\/p>\n<p><i>This is a standalone component of a much larger project.<\/i><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It\u00e2\u20ac\u2122s about time I created something noteworthy, after joining a Lowell Makes over two years ago. Like most DIY posts nowadays, I\u00e2\u20ac\u2122m leading off with the finished product: a mostly functional arcade control panel! I had a ton of help in basic woodworking skills from a few members in the makerspace. Jack Walsh &#8211; How [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-273","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=273"}],"version-history":[{"count":5,"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts\/273\/revisions"}],"predecessor-version":[{"id":298,"href":"https:\/\/morsepower.net\/index.php?rest_route=\/wp\/v2\/posts\/273\/revisions\/298"}],"wp:attachment":[{"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/morsepower.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}