arcade-panel: initial checkin, useless code
authorClinton Ebadi <clinton@unknownlamer.org>
Sun, 12 Mar 2017 03:32:38 +0000 (22:32 -0500)
committerClinton Ebadi <clinton@unknownlamer.org>
Sun, 12 Mar 2017 03:32:38 +0000 (22:32 -0500)
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 [new file with mode: 0644]

diff --git a/ble arcade controller/arcade-box.scad b/ble arcade controller/arcade-box.scad
new file mode 100644 (file)
index 0000000..58075f0
--- /dev/null
@@ -0,0 +1,118 @@
+// arcade controller thing
+// Copyright (c) 2017 Clinton Ebadi <clinton@unknownlamer.org>
+// GPLv3 or (at your option) any later version
+// .. insert license text here ...
+
+use <obiscad/bcube.scad>
+
+$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 ();