From ee49ff3d494850243e1c2c3b657bacb9dff9a404 Mon Sep 17 00:00:00 2001 From: Clinton Ebadi Date: Sat, 11 Mar 2017 22:32:38 -0500 Subject: [PATCH] arcade-panel: initial checkin, useless code initial fugly code for what will become a bluetooth arcade control panel. Doesn't really work, just needed to check the code in before slicing and dicing it into something that works. --- ble arcade controller/arcade-box.scad | 118 ++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 ble arcade controller/arcade-box.scad diff --git a/ble arcade controller/arcade-box.scad b/ble arcade controller/arcade-box.scad new file mode 100644 index 0000000..58075f0 --- /dev/null +++ b/ble arcade controller/arcade-box.scad @@ -0,0 +1,118 @@ +// arcade controller thing +// Copyright (c) 2017 Clinton Ebadi +// GPLv3 or (at your option) any later version +// .. insert license text here ... + +use + +$button_d = 28; + +module button (bezel = $button_d+4) { + circle (d=$button_d); + %circle(d=bezel); +} + +js_width = 40; +js_height = 85; + +module joystick () { + bolt_d = 8; + center_hole_d = 24; + + + for (x = [0, js_width], y = [0, js_height]) { + translate ([x, y, 0]) circle (d=bolt_d); // need slot instead + } + translate ([js_width/2, js_height/2, 0]) circle (d=center_hole_d); + + %square ([js_width, js_height]); // not right... +} + +panel_w = 250; +panel_h = 120; + +module box_base (x_offset=0, y_offset=0, c=2) { // shitty name + offset (detal = c, chamfer=true) square ([panel_w+c+x_offset, panel_h+c+y_offset]); + +} + +box_h = 80; +box_wall = 2; +base_h = 5; +// bcube parameters, clean up +cr = 2; +cres = 4; + +module betterbox_walls () { + difference() { + + bcube([panel_w, panel_h, box_h-base_h], cr, cres); + bcube([panel_w-box_wall, panel_h-box_wall, box_h], cr, cres); + } +} + +module betterbox_base () { + bcube([panel_w, panel_h, base_h], cr, cres); +} + + +module betterbox () { + betterbox_base (); + translate ([0, 0, (box_h)/2]) betterbox_walls (); +} + +betterbox (); + +module box () { + + linear_extrude (base_h) { + box_base (); + } + translate ([0, 0, base_h]) linear_extrude (box_h) { + difference () { + box_base (); + translate ([box_wall/2, box_wall/2, 0]) + box_base (x_offset=-box_wall, y_offset=-box_wall); + + } + } +} + +//box (); + + + +module panel () { + difference () { + box_base (); + translate ([15, panel_h/2-js_height/2, 0]) panel_layout (); + } +} + +//linear_extrude (6) panel (); + + + +// panel layout + +// http://smg.photobucket.com/user/ttooddddyy/media/neogeoMVS-4-25ver3-cpLayout.jpg.html + +module panel_layout () { + joystick (); + + // p1, coin + %translate ([140-$button_d, $button_d+65, 0]) { + button (); + translate ([$button_d+10, 0, 0]) button (); + } + + // a, b, c, d + translate ([js_width/2+$button_d/2+63.5, js_height/2, 0]) { + button (); + for (i = [ 1 : 3 ]) { + translate ([i*($button_d+10)-5, 30, 0]) button (); + } + } +} + +//panel_layout (); -- 2.20.1