25 Commits

Author SHA1 Message Date
36231248b9 new decorative plate for the 3-button aux controls 2023-11-26 12:59:54 -06:00
62c804ed35 group the three 24mm buttons used in frames in one component
this is a bit cleaner/DRY, and also lets me experiment with a decorative
plate easily
2023-11-25 23:52:20 -06:00
769f184d1d update material notes a bit with Hatchbox white 2023-11-23 20:50:09 -06:00
f14c80d8a8 bring the frame Z back to 55mm, for taller levers
50mm - 10mm of panels was fine for some levers but not enough for the
LSX-NOBI, which I personally have a number of. I can't vet every lever
in existence, but I know at least that this was a problem that is solved
by adding 5mm, which seems like a fair trade and not a huge difference
in the final product.

this also helps the fact that at 40mm internal, some buttons + wiring
harnesses were getting pretty tight, mostly relevant at the frame
connection point where the inner bottom panel isn't a basin. this should
help that too.

additionally this has us go back to the 45mm M4 standoff recommendation,
which kinda sucks because it seems like 40mm are easier to find, but as
stated in the notes, the difference is somewhat negligible if you just
use 40mm with longer bolts.
2023-11-23 09:32:03 -06:00
ae40fd7289 break out tweakable parameters into a separate file
this allows for:

include <parameters.scad>
// override a variable such as
frame_z = 60;
include <components.scad>

which will let individual components tweak settings, e.g. the height of
a frame
2023-11-20 14:25:27 -06:00
9a5792580c add a comment that is all that survived some experimentation 2023-11-16 16:48:05 -06:00
524273369b correctly refer to the plate overhang as per edge 2023-11-16 09:02:43 -06:00
e7a8fc42ed correctly refer to the frame wall as per edge 2023-11-16 08:59:06 -06:00
bac99f6ea8 fix dustwashers by scaling them based on the plate hole 2023-11-14 23:56:03 -06:00
6a4980165d write down a thing to try if I ever get time 2023-11-10 15:49:45 -06:00
7d3b4c0a6c update notes on bolts/plate heights 2023-11-10 15:49:26 -06:00
f2efee40ee include a finished photo, this time of an inset-based stick 2023-11-10 15:49:14 -06:00
53ecd27047 convert decorative plates to scaling the base button rather than adding 2023-11-09 12:47:05 -06:00
544f4fb4ce cleanups to the decorative plates 2023-11-09 12:29:18 -06:00
b9d66a4a2f remove commented out code 2023-11-09 08:02:47 -06:00
696697f574 more inset panels, my normal 9+1 buttons 2023-11-09 07:52:05 -06:00
d2a1a5be13 scoot the dir arc in and up a bit
the horizontal move sends the dir arc closer to the edge, and the
vertical move puts the top back where it used to be before moving the
rest of the layouts down

both of these choices are entirely subjective
2023-11-08 18:38:06 -06:00
56f2214339 scoot the button layouts down a bit
this gives a bit more space at the front, mostly so that the decorative
plate doesn't hang over the edge of an inset panel
2023-11-08 18:37:02 -06:00
6fa474b748 update README, need 40mm spacers since chopping the bottom 2023-11-08 18:14:19 -06:00
e13946e883 inset panel for a lever + directionals + W 2023-11-07 14:39:36 -06:00
fbf0dc6896 allow the frame bottom to take insets/raised panels too
this complicates the print, in that now printing the frame requires
supports, but by cutting in on the bottom the same way as the top, we
can center some stuff better and also make the plates a bit more
interchangeable. this also eliminates the slightly unsightly bottom
panel hanging out in the open, so overall I think it's worth the
printing complication
2023-11-02 16:34:08 -05:00
538fb1430b add a dustwasher for JLF mounts 2023-10-26 18:09:41 -05:00
8025038db5 improve 24mm + W layout components, add decorative plate 2023-10-04 16:47:06 -05:00
11107fe826 add lever + 6 30mm button sega 2P layout panel
a bit tight but totally possible
2023-10-04 16:45:53 -05:00
4ec97b9f36 add components for an OLED cutout and panel using it 2023-10-04 16:44:59 -05:00
50 changed files with 481 additions and 142 deletions

View File

@@ -4,6 +4,12 @@ Files for 3D printing an arcade stick.
![An example of stick components displayed in OpenSCAD](docs/two-panel-example-v3.png) ![An example of stick components displayed in OpenSCAD](docs/two-panel-example-v3.png)
[OpenSCAD-based illustration of how the components for an overhang panel-based stick fit together.]
![A photo of a completed stick](docs/finished-v3.1.jpg)
[Photo of a completed inset panel-based stick.]
Originally an attempt to make a couple customized STL files for the [OpenStickCommunity Fightstick Originally an attempt to make a couple customized STL files for the [OpenStickCommunity Fightstick
Case](https://github.com/OpenStickCommunity/Hardware/tree/main/Fightstick%20Case), the changes ballooned to fit my Case](https://github.com/OpenStickCommunity/Hardware/tree/main/Fightstick%20Case), the changes ballooned to fit my
design and became incompatible with that project's components. This should be considered a different project with some design and became incompatible with that project's components. This should be considered a different project with some
@@ -30,8 +36,12 @@ What you'll need beyond these objects:
Board](https://github.com/OpenStickCommunity/Hardware/tree/main/RP2040%20Advanced%20Breakout%20Board)) Board](https://github.com/OpenStickCommunity/Hardware/tree/main/RP2040%20Advanced%20Breakout%20Board))
* 4 M3 8mm hex bolts to secure the PCB to a panel * 4 M3 8mm hex bolts to secure the PCB to a panel
* Per frame and plate combo: * Per frame and plate combo:
* 4 45mm M4 hex brass standoffs * 4 45mm M4 hex brass standoffs (or equivalent)
* 8 12-16mm M4 countersunk hex bolts * 8 M4 countersunk hex bolts
* Overhang plates should use 12-16mm length bolts since they are taller
* Inset plates should probably use 8-12mm bolts --- some standoffs aren't threaded the whole way, making 16mm
too long to go flush
* If making the 45mm standoffs from multiple smaller ones, make sure they have enough length to take your bolts!
* Per frame connection point: * Per frame connection point:
* 8 16mm M4 bolts * 8 16mm M4 bolts
* 8 M4 flange nuts * 8 M4 flange nuts
@@ -50,8 +60,8 @@ This is a rough estimate of the cost to produce one of these sticks, assuming a
Filament masses from Bambu Studio estimates, using Bambu PLA Basic. Filament masses from Bambu Studio estimates, using Bambu PLA Basic.
* Left and right frame: **$7.08 USD** (141.84g each, as of 2023-09-12) * Left and right frame: **$7.08 USD** (141.84g each, as of 2023-09-12)
* Left and right top panels: **~$6.74 USD** (~135g each, as of 2023-09-12) * Left and right (overhang) top panels: **~$6.74 USD** (~135g each, as of 2023-09-12)
* Left and right bottom panels: **$5.90 USD** (118.16g each, as of 2023-09-12) * Left and right (overhang) bottom panels: **$5.90 USD** (118.16g each, as of 2023-09-12)
* Miscellaneous mounting plates, decorative plates, etc.: **~$1.00 USD** (~40g, as of 2023-09-12) * Miscellaneous mounting plates, decorative plates, etc.: **~$1.00 USD** (~40g, as of 2023-09-12)
* 8 16mm M4 bolts to connect the frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of 2023-09-12) * 8 16mm M4 bolts to connect the frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of 2023-09-12)
* 8 M4 flange nuts to connect the frames: **$0.68 USD** (you can get a pack of 100 on Amazon for $8.50, as of 2023-09-12) * 8 M4 flange nuts to connect the frames: **$0.68 USD** (you can get a pack of 100 on Amazon for $8.50, as of 2023-09-12)
@@ -63,12 +73,11 @@ Filament masses from Bambu Studio estimates, using Bambu PLA Basic.
2023-09-12) 2023-09-12)
* You could 3D print these too, but you're probably better off with brass ones as they give some weight to the * You could 3D print these too, but you're probably better off with brass ones as they give some weight to the
stick anyway stick anyway
* You can also use a shorter length with longer bolts, or combine multiple spacers, if either of those yield better
prices
* 8 16mm M4 bolts to connect top plates to frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of * 8 16mm M4 bolts to connect top plates to frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of
* 8 12mm M4 bolts to connect bottom plates to frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of * 8 12mm M4 bolts to connect bottom plates to frames: **$0.72 USD** (you can get a pack of 100 on Amazon for $9, as of
2023-09-12) 2023-09-12)
* You may be tempted to use 16mm M4 bolts for both the top and bottom, but the spacers I have aren't threaded all
the way through the shaft, and 16mm bolts won't make it all the way on the bottom panel, but do on the top panel
(which is 5mm thicker); be careful I guess
With an enclosure coming in around $26, depending on your choices --- say, ~$30 for TheTrain's RP2040 Advanced Breakout With an enclosure coming in around $26, depending on your choices --- say, ~$30 for TheTrain's RP2040 Advanced Breakout
Board, ~$60 for Sanwa buttons and a lever, and ~$20 for miscellaneous connectors and wiring --- you can put a Board, ~$60 for Sanwa buttons and a lever, and ~$20 for miscellaneous connectors and wiring --- you can put a

View File

@@ -8,3 +8,4 @@ Notes for "next time".
* Try making it so top plates are bolted in from the side of the frame rather than the top * Try making it so top plates are bolted in from the side of the frame rather than the top
* I'm thinking of abandoning this, because it makes the frame more complicated to have a portion of a column rather * I'm thinking of abandoning this, because it makes the frame more complicated to have a portion of a column rather
than the full column, but I'll keep it here for a bit longer than the full column, but I'll keep it here for a bit longer
* Try making frames out of four pieces connected at joints on the hex posts, rather than one large piece?

BIN
docs/finished-v3.1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

View File

@@ -21,4 +21,5 @@ bss's random thoughts and notes on 3D printing materials.
## Hatchbox PLA ## Hatchbox PLA
* Haven't done a lot of this yet, but my wife really likes the blue. * **Blue:** very blue. Wife likes it.
* **White:** more opaque than the Bambu PLA mentioned above, makes a pretty decent (still slightly translucent) frame.

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <frame-left.scad> use <frame-left.scad>
use <frame-right.scad> use <frame-right.scad>

View File

@@ -16,12 +16,13 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module bottom_panel() { module bottom_panel() {
difference() { difference() {
mirror([0, 0, 1]) topplate(); mirror([0, 0, 1]) topplate();
translate([0, 0, top_plate_z/2]) cube([top_plate_x*5/6, top_plate_y*5/6, top_plate_z], center=true); translate([0, 0, top_plate_z/2]) cube([top_plate_x-40, top_plate_y-40, top_plate_z], center=true);
} }
} }

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <bottom-panel-solo.scad> use <bottom-panel-solo.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <bottom-panel-left.scad> use <bottom-panel-left.scad>
use <bottom-panel-right.scad> use <bottom-panel-right.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <bottom-panel-left.scad> use <bottom-panel-left.scad>

View File

@@ -16,12 +16,13 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module bottom_panel_solo() { module bottom_panel_solo() {
difference() { difference() {
bottom_plate_with_overhang(); bottom_plate_with_overhang();
translate([0, 0, top_plate_z/2]) cube([top_plate_x*5/6, top_plate_y*5/6, top_plate_z], center=true); translate([0, 0, top_plate_z/2]) cube([top_plate_x-40, top_plate_y-40, top_plate_z], center=true);
} }
} }

View File

@@ -18,69 +18,6 @@
include <roundedcube.scad> include <roundedcube.scad>
/* QUASI-CONSTANTS */
// adjustments
hole_tolerance = 0.15;
// M3
m3_screw_selftap_radius = 1.3;
// M4
m4_bolt_radius = 2 + hole_tolerance;
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
m4_bolt_hex_exterior_radius = 3.6 + hole_tolerance;
// 24mm button
small_button_radius = 12 + hole_tolerance;
// 30mm button
big_button_radius = 15 + hole_tolerance;
// JLF mount dimensions
lever_mount_x = 53;
lever_mount_y = 95;
lever_mount_z = 2;
// case dimensions
// base frame box. reminder: top of inside (including mounts) is chopped by top_plate_z for plates
frame_x = 233;
frame_y = 208;
frame_z = 50;
// depth of the "lip" of the frame that the top plate sets into/supports the overhang
frame_wall = 8;
// per neutrik (mm)
neutrik_panel_thickness = 3;
// top plate, which can either be the whole plate ("inset") or the mounting frame for a plate that overhangs
top_plate_x = frame_x - frame_wall;
top_plate_y = frame_y - frame_wall;
top_plate_z = 5;
// how much the top plate x/y is expanded to overhang the frame
// note that this is relative to the top plate (so the wall is added back)
top_plate_overhang_amount = frame_wall + 17;
overhang_top_plate_x = top_plate_x + top_plate_overhang_amount;
overhang_top_plate_y = top_plate_y + top_plate_overhang_amount;
plate_to_frame_point_x = (top_plate_x/2)-10;
plate_to_frame_point_y = (top_plate_y/2)-10;
// frame interior that supports the top plates
panel_support_width = 5;
// neutrik D screw holes
neutrik_d_screw_radius = 1.6 + hole_tolerance;
neutrik_d_radius = 12 + hole_tolerance;
// additional button radius for decorative panels, etc.
decorative_radius = 12;
jumbo_decorative_radius = 15;
/* PARTS */
module m4_hole() { module m4_hole() {
cylinder(r=m4_bolt_radius, h=100, $fn=50, center=true); cylinder(r=m4_bolt_radius, h=100, $fn=50, center=true);
} }
@@ -111,8 +48,8 @@ module button_24mm_hole() {
// translation is to leave 3mm thickness in the plate without recentering anything // translation is to leave 3mm thickness in the plate without recentering anything
translate([0, 0, -25]) cylinder(r=small_button_radius+6, h=49, $fn=50, center=true); translate([0, 0, -25]) cylinder(r=small_button_radius+6, h=49, $fn=50, center=true);
// space for decorative button surround stuff // space for decorative button surround stuff
translate([0, 0, 50]) cylinder(r=small_button_radius+decorative_radius, h=20, $fn=50, center=true); translate([0, 0, 50]) cylinder(r=small_button_radius*decorative_radius_scale, h=20, $fn=50, center=true);
translate([0, 0, 70]) cylinder(r=small_button_radius+jumbo_decorative_radius, h=20, $fn=50, center=true); translate([0, 0, 70]) cylinder(r=small_button_radius*jumbo_decorative_radius_scale, h=20, $fn=50, center=true);
} }
// button hole, with extra wide bits for various uses (cutting out space // button hole, with extra wide bits for various uses (cutting out space
@@ -124,8 +61,8 @@ module button_30mm_hole() {
// translation is to leave 3mm thickness in the plate without recentering anything // translation is to leave 3mm thickness in the plate without recentering anything
translate([0, 0, -25]) cylinder(r=big_button_radius+6, h=49, $fn=50, center=true); translate([0, 0, -25]) cylinder(r=big_button_radius+6, h=49, $fn=50, center=true);
// space for decorative button surround stuff // space for decorative button surround stuff
translate([0, 0, 50]) cylinder(r=big_button_radius+decorative_radius, h=20, $fn=50, center=true); translate([0, 0, 50]) cylinder(r=big_button_radius*decorative_radius_scale, h=20, $fn=50, center=true);
translate([0, 0, 70]) cylinder(r=big_button_radius+jumbo_decorative_radius, h=20, $fn=50, center=true); translate([0, 0, 70]) cylinder(r=big_button_radius*jumbo_decorative_radius_scale, h=20, $fn=50, center=true);
} }
module frame_hex_bolt_hole() { module frame_hex_bolt_hole() {
@@ -150,9 +87,35 @@ module neutrik_d_mount() {
translate([-9.5, -12, 0]) neutrik_d_screw_hole(); translate([-9.5, -12, 0]) neutrik_d_screw_hole();
} }
// space for a neutrik D mount or 24mm button // space for a neutrik D mount or 24mm button - Z is to cut the whole inside without affecting panel lip
module frame_cutout() { module frame_cutout() {
cube([36.5, 8, 40], center=true); cube([36.5, 8, frame_z-(top_plate_z*2)], center=true);
}
// bank of three 24mm buttons, commonly on a frame face
module aux_control_three_button_cluster() {
translate([-40, 0, 0]) button_24mm_hole();
translate([0, 0, 0]) button_24mm_hole();
translate([40, 0, 0]) button_24mm_hole();
}
module m2_mount_post() {
difference() {
cylinder(r=m2_screw_selftap_radius*2.25, h=3, $fn=6, center=true);
cylinder(r=m2_screw_selftap_radius, h=3*2, $fn=50, center=true);
}
}
module oled_ssd1306_mount() {
translate([11.5, 12, 0]) m2_mount_post();
translate([11.5, -12, 0]) m2_mount_post();
translate([-11.5, 12, 0]) m2_mount_post();
translate([-11.5, -12, 0]) m2_mount_post();
}
module oled_ssd1306_mount_cutout() {
translate([0, 1.9, 0]) cube([25, 14, 5], center=true);
translate([0, 0, -1.0]) cube([35, 35, 4], center=true);
} }
module m3_mount_post() { module m3_mount_post() {
@@ -184,7 +147,7 @@ module levermountbase() {
// should work with JLF, JLW, LS-32, LS-33, LS-40, LS-55, LS-56 // should work with JLF, JLW, LS-32, LS-33, LS-40, LS-55, LS-56
module levermountholes() { module levermountholes() {
// joystick hole // joystick hole
cylinder(r=12, h=5.1, $fn=50, center=true); cylinder(r=lever_plate_hole, h=5.1, $fn=50, center=true);
// holes for joystick bolts // holes for joystick bolts
translate([20, 42.5, 0]) translate([20, 42.5, 0])
m4_hole(); m4_hole();
@@ -236,7 +199,7 @@ module topplate() {
module bottom_plate_with_overhang() { module bottom_plate_with_overhang() {
difference() { difference() {
overhang_plate(); rotate([180, 0, 0]) base_top_plate_with_raised_overhang();
rotate([180, 0, 0]) top_plate_holes(); rotate([180, 0, 0]) top_plate_holes();
} }
} }
@@ -251,6 +214,7 @@ module top_plate_with_raised_overhang() {
module frame_box() { module frame_box() {
difference() { difference() {
roundedcube([frame_x, frame_y, frame_z], center=true, radius=3); roundedcube([frame_x, frame_y, frame_z], center=true, radius=3);
// cut out the middle to make it a box
cube([top_plate_x-(panel_support_width*2), top_plate_y-(panel_support_width*2), frame_z+5], center=true); cube([top_plate_x-(panel_support_width*2), top_plate_y-(panel_support_width*2), frame_z+5], center=true);
} }
} }
@@ -291,6 +255,7 @@ module frame() {
difference() { difference() {
base_frame(); base_frame();
translate([0, 0, frame_z/2]) scale([1, 1, 2]) base_topplate(); translate([0, 0, frame_z/2]) scale([1, 1, 2]) base_topplate();
translate([0, 0, -frame_z/2]) scale([1, 1, 2]) base_topplate();
translate([plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_hex_bolt_hole();
translate([-plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([-plate_to_frame_point_x, plate_to_frame_point_y, 0]) frame_hex_bolt_hole();
translate([plate_to_frame_point_x, -plate_to_frame_point_y, 0]) frame_hex_bolt_hole(); translate([plate_to_frame_point_x, -plate_to_frame_point_y, 0]) frame_hex_bolt_hole();
@@ -311,49 +276,60 @@ module dir_arc_24mm_directionals() {
module dir_arc_24mm_6_button() { module dir_arc_24mm_6_button() {
dir_arc_24mm_directionals(); dir_arc_24mm_directionals();
translate([29.5+26.3+15.5+9.7+2.6, 0, 0]) button_24mm_hole(); translate([29.5+26.3+27.8, 0, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9, 10.9, 0]) button_24mm_hole(); translate([29.5+26.3+27.8+26.9, 10.9, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9+29.6, 10.9, 0]) button_24mm_hole(); translate([29.5+26.3+27.8+26.9+29.6, 10.9, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7, -29.4, 0]) button_24mm_hole(); translate([29.5+26.3+15.5+9.7, -29.4, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9-1.7, 10.9-30.1, 0]) button_24mm_hole(); translate([29.5+26.3+27.8+26.9-1.7, 10.9-30.1, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9+29.6, 10.9-30.1, 0]) button_24mm_hole(); translate([29.5+26.3+27.8+26.9+29.6-0.2, 10.9-30.1, 0]) button_24mm_hole();
}
module dir_arc_24mm_8_button() {
dir_arc_24mm_6_button();
translate([29.5+26.3+27.8+26.9+29.6+29.5, 7.1, 0]) button_24mm_hole();
translate([29.5+26.3+27.8+26.9+29.6+29.5-0.3, -23.9, 0]) button_24mm_hole();
} }
// 6 button plus the normal fourth column for 8 button actually on a third row // 6 button plus the normal fourth column for 8 button actually on a third row
module dir_arc_24mm_8_button_compressed() { module dir_arc_24mm_8_button_compressed() {
dir_arc_24mm_6_button(); dir_arc_24mm_6_button();
translate([29.5+26.3+15.5+9.7+2.6+2.6, 29.4, 0]) button_24mm_hole(); translate([29.5+26.3+27.8+2.6, 29.4, 0]) button_24mm_hole();
translate([29.5+26.3+15.5+9.7+2.6+26.9+2.6, 40.3, 0]) button_24mm_hole(); translate([29.5+26.3+27.8+26.9+2.6, 40.3, 0]) button_24mm_hole();
}
module dir_arc_plus_w_24mm_8_button() {
dir_arc_24mm_8_button();
translate([36, 28, 0]) button_24mm_hole();
} }
// Directional Arc (left hand) // Directional Arc (left hand)
module dir_arc_30mm_thumb_button() { module dir_arc_30mm_thumb_button() {
// just my guesstimate on this one, but note that this is the same position as sega 2p (just mirrored) // just my guesstimate on this one, but note that this is the same position as sega 2p (just mirrored)
translate([(top_plate_x/2)-28.06, (-top_plate_y/2)+67, 0]) button_30mm_hole(); translate([(top_plate_x/2)-28.06, (-top_plate_y/2)+62, 0]) button_30mm_hole();
} }
module dir_arc_30mm() { module dir_arc_30mm() {
dir_arc_30mm_thumb_button(); dir_arc_30mm_thumb_button();
translate([-5.4, 52.2, 0]) dir_arc_30mm_thumb_button(); translate([0, 57.2, 0]) dir_arc_30mm_thumb_button();
translate([-5.4-33.8, 52.2+12.9, 0]) dir_arc_30mm_thumb_button(); translate([-33.8, 57.2+12.9, 0]) dir_arc_30mm_thumb_button();
translate([-5.4-33.8-34.8, 52.2+12.9, 0]) dir_arc_30mm_thumb_button(); translate([-33.8-34.8, 57.2+12.9, 0]) dir_arc_30mm_thumb_button();
} }
module dir_arc_w_30mm() { module dir_arc_w_30mm() {
dir_arc_30mm(); dir_arc_30mm();
translate([-5.4-26.8, 52.2+12.9+34.5, 0]) dir_arc_30mm_thumb_button(); translate([-26.8, 57.2+12.9+34.5, 0]) dir_arc_30mm_thumb_button();
} }
module dir_arc_w_30mm_plus_one() { module dir_arc_w_30mm_plus_one() {
dir_arc_w_30mm(); dir_arc_w_30mm();
translate([-5.4-33.8-34.8-33.8, 52.2, 0]) dir_arc_30mm_thumb_button(); translate([-33.8-34.8-33.8, 57.2, 0]) dir_arc_30mm_thumb_button();
} }
// Namco Noir (right hand) // Namco Noir (right hand)
module noir_button_p1() { module noir_button_p1() {
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([35, 145, 0]) button_30mm_hole(); translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([35, 140, 0]) button_30mm_hole();
} }
module noir_plus_one() { module noir_plus_one() {
@@ -374,7 +350,7 @@ module noir_plus_one() {
// Sega Astro City 2P (right hand) // Sega Astro City 2P (right hand)
module sega_2p_p1() { module sega_2p_p1() {
translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([28.06, 145, 0]) button_30mm_hole(); translate([-top_plate_x/2, -top_plate_y/2, 0]) translate([28.06, 140, 0]) button_30mm_hole();
} }
module sega_2p_6_button() { module sega_2p_6_button() {

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module base_left_frame() { module base_left_frame() {
@@ -30,17 +31,15 @@ module left_frame() {
difference() { difference() {
base_left_frame(); base_left_frame();
// connection holes to other frames // connection holes to other frames
translate([0, 0, -top_plate_z/2]) frame_connection_holes(); frame_connection_holes();
// cable routing hole // cable routing hole
translate([0, 0, -top_plate_z/2]) frame_cable_routing_hole(); frame_cable_routing_hole();
// aux button holes // aux button holes
translate([-30, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole(); translate([-30, 101.5, 0]) rotate([270, 0, 0]) aux_control_three_button_cluster();
translate([-30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([-30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([-70, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([-70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([-70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([10, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
// neutrix button hole // neutrix button hole

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module base_middle_frame() { module base_middle_frame() {
@@ -31,12 +32,12 @@ module middle_frame() {
difference() { difference() {
base_middle_frame(); base_middle_frame();
// connection holes to other frames // connection holes to other frames
translate([0, 0, -top_plate_z/2]) frame_connection_holes(); frame_connection_holes();
translate([0, 0, -top_plate_z/2]) mirror([1, 0, 0]) frame_connection_holes(); mirror([1, 0, 0]) frame_connection_holes();
// cable routing holes // cable routing holes
translate([0, 0, -top_plate_z/2]) frame_cable_routing_hole(); frame_cable_routing_hole();
translate([0, 0, -top_plate_z/2]) mirror([1, 0, 0]) frame_cable_routing_hole(); mirror([1, 0, 0]) frame_cable_routing_hole();
// neutrik mounts for connector, switches // neutrik mounts for connector, switches
translate([0, (frame_y/2)-neutrik_panel_thickness, 0]) rotate([90, 0, 0]) neutrik_d_mount(); translate([0, (frame_y/2)-neutrik_panel_thickness, 0]) rotate([90, 0, 0]) neutrik_d_mount();

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module base_right_frame() { module base_right_frame() {
@@ -30,17 +31,15 @@ module right_frame() {
difference() { difference() {
base_right_frame(); base_right_frame();
// connection holes to other frames // connection holes to other frames
mirror([1, 0, 0]) translate([0, 0, -top_plate_z/2]) frame_connection_holes(); mirror([1, 0, 0]) frame_connection_holes();
// cable routing hole // cable routing hole
mirror([1, 0, 0]) translate([0, 0, -top_plate_z/2]) frame_cable_routing_hole(); mirror([1, 0, 0]) frame_cable_routing_hole();
// aux button holes // aux button holes
translate([30, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole(); translate([30, 101.5, 0]) rotate([270, 0, 0]) aux_control_three_button_cluster();
translate([30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([30, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([70, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([70, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
translate([-10, 101.5, 0]) rotate([270, 0, 0]) button_24mm_hole();
translate([-10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([-10, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
// neutrix button hole // neutrix button hole

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module solo_frame() { module solo_frame() {
@@ -31,23 +32,14 @@ module solo_frame() {
translate([40, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout(); translate([40, (frame_y/2)-neutrik_panel_thickness-4, 0]) frame_cutout();
// aux button holes // aux button holes
translate([-frame_x/2+2.5, 0, 0]) rotate([0, 0, 270]) translate([-frame_x/2+2.5, 0, 0]) rotate([90, 0, 270]) aux_control_three_button_cluster();
translate([0, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([(frame_x/2)-neutrik_panel_thickness-4, 0, 0]) rotate([0, 0, 90]) frame_cutout(); translate([(frame_x/2)-neutrik_panel_thickness-4, 0, 0]) rotate([0, 0, 90]) frame_cutout();
translate([-frame_x/2+2.5, 0, 0]) rotate([0, 0, 270])
translate([-40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([(frame_x/2)-neutrik_panel_thickness-4, -40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([(frame_x/2)-neutrik_panel_thickness-4, -40, 0]) rotate([0, 0, 90]) frame_cutout();
translate([-frame_x/2+2.5, 0, 0]) rotate([0, 0, 270])
translate([40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([(frame_x/2)-neutrik_panel_thickness-4, 40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([(frame_x/2)-neutrik_panel_thickness-4, 40, 0]) rotate([0, 0, 90]) frame_cutout();
translate([frame_x/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([0, 0, 0]) rotate([90, 0, 0]) button_24mm_hole(); translate([frame_x/2+2.5, 0, 0]) rotate([90, 0, 270]) aux_control_three_button_cluster();
translate([-(frame_x/2)+neutrik_panel_thickness+4, 0, 0]) rotate([0, 0, 90]) frame_cutout(); translate([-(frame_x/2)+neutrik_panel_thickness+4, 0, 0]) rotate([0, 0, 90]) frame_cutout();
translate([frame_x/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([-40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([-(frame_x/2)+neutrik_panel_thickness+4, -40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([-(frame_x/2)+neutrik_panel_thickness+4, -40, 0]) rotate([0, 0, 90]) frame_cutout();
translate([frame_x/2-2.5, 0, 0]) rotate([0, 0, 90])
translate([40, 0, 0]) rotate([90, 0, 0]) button_24mm_hole();
translate([-(frame_x/2)+neutrik_panel_thickness+4, 40, 0]) rotate([0, 0, 90]) frame_cutout(); translate([-(frame_x/2)+neutrik_panel_thickness+4, 40, 0]) rotate([0, 0, 90]) frame_cutout();
} }
} }

View File

@@ -16,15 +16,15 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module button_24mm_decorative_plate() { module button_24mm_decorative_plate() {
difference() { difference() {
decorative_add=10; // get a 2mm slice of the bigger button cylinders
// get a 1mm slice of the bigger button cylinders translate([0, 0, -55]) button_24mm_hole();
translate([0, 0, -45]) button_24mm_hole(); translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, -50]) cube([500, 500, 98], center=true); translate([0, 0, 100]) cube([500, 500, 198], center=true);
translate([0, 0, 50]) cube([500, 500, 98], center=true);
// cut out the normal holes // cut out the normal holes
translate([0, 0, -1]) button_24mm_hole(); translate([0, 0, -1]) button_24mm_hole();
} }

View File

@@ -0,0 +1,33 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
use <misc-neutrik-d-plate.scad>
module aux_control_three_button_cluster_decorative_plate() {
difference() {
hull() {
translate([-50, 0, 0]) neutrik_d_plate();
translate([50, 0, 0]) neutrik_d_plate();
}
translate([0, 0, -10]) aux_control_three_button_cluster();
}
}
aux_control_three_button_cluster_decorative_plate();

View File

@@ -0,0 +1,33 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
module dir_arc_plus_w_24mm_8_button_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) dir_arc_plus_w_24mm_8_button();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes
translate([0, 0, -1]) dir_arc_plus_w_24mm_8_button();
}
}
dir_arc_plus_w_24mm_8_button_decorative_plate();

View File

@@ -16,11 +16,12 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate() { module dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate() {
difference() { difference() {
// get a 1mm slice of the bigger button cylinders // get a 2mm slice of the bigger button cylinders
union() { union() {
translate([-top_plate_x/2, 0, -65]) dir_arc_w_30mm(); translate([-top_plate_x/2, 0, -65]) dir_arc_w_30mm();
translate([top_plate_x/2, 0, -65]) sega_2p_plus_one(); translate([top_plate_x/2, 0, -65]) sega_2p_plus_one();
@@ -31,8 +32,6 @@ module dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate() {
translate([-top_plate_x/2, 0, -1]) dir_arc_w_30mm(); translate([-top_plate_x/2, 0, -1]) dir_arc_w_30mm();
translate([top_plate_x/2, 0, -1]) sega_2p_plus_one(); translate([top_plate_x/2, 0, -1]) sega_2p_plus_one();
} }
/* // fill in some space */
/* translate([-6, -6, 0]) cube([23, 23, 1], center=true); */
} }
dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate(); dir_arc_plus_w_30mm_and_sega_2p_plus_one_decorative_plate();

View File

@@ -16,14 +16,15 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_plus_w_30mm_decorative_plate() { module dir_arc_plus_w_30mm_decorative_plate() {
difference() { difference() {
// get a 1mm slice of the bigger button cylinders // get a 2mm slice of the bigger button cylinders
translate([0, 0, -45]) dir_arc_w_30mm(); translate([0, 0, -55]) dir_arc_w_30mm();
translate([0, 0, -50]) cube([500, 500, 98], center=true); translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 50]) cube([500, 500, 98], center=true); translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes // cut out the normal holes
translate([0, 0, -1]) dir_arc_w_30mm(); translate([0, 0, -1]) dir_arc_w_30mm();
} }

View File

@@ -0,0 +1,33 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
module sega_2p_6_button_decorative_plate() {
difference() {
// get a 2mm slice of the bigger button cylinders
translate([0, 0, -55]) sega_2p_6_button();
translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, 100]) cube([500, 500, 198], center=true);
// cut out the normal holes
translate([0, 0, -1]) sega_2p_6_button();
}
}
sega_2p_6_button_decorative_plate();

View File

@@ -16,15 +16,15 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module sega_2p_plus_one_decorative_plate() { module sega_2p_plus_one_decorative_plate() {
difference() { difference() {
decorative_add=10; // get a 2mm slice of the bigger button cylinders
// get a 1mm slice of the bigger button cylinders translate([0, 0, -55]) sega_2p_plus_one();
translate([0, 0, -45]) sega_2p_plus_one(); translate([0, 0, -100]) cube([500, 500, 198], center=true);
translate([0, 0, -50]) cube([500, 500, 98], center=true); translate([0, 0, 100]) cube([500, 500, 198], center=true);
translate([0, 0, 50]) cube([500, 500, 98], center=true);
// cut out the normal holes // cut out the normal holes
translate([0, 0, -1]) sega_2p_plus_one(); translate([0, 0, -1]) sega_2p_plus_one();
} }

View File

@@ -0,0 +1,30 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
module jlf_dustwasher() {
difference() {
cylinder(r=lever_plate_hole*decorative_radius_scale, h=2, $fn=50, center=true);
// 5.25 = 4.55 (diameter of shaft is 9.10mm) + .25 to let it take an angle
cylinder(r=4.8, h=2.1, $fn=50, center=true);
}
}
jlf_dustwasher();

View File

@@ -16,11 +16,12 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module lsx_nobi_dustwasher() { module lsx_nobi_dustwasher() {
difference() { difference() {
cylinder(r=jumbo_decorative_radius+5+hole_tolerance, h=2, $fn=50, center=true); cylinder(r=lever_plate_hole*decorative_radius_scale, h=2, $fn=50, center=true);
// 5.25 = 5 (diameter of shaft is 10mm) + .25 to let it take an angle // 5.25 = 5 (diameter of shaft is 10mm) + .25 to let it take an angle
cylinder(r=5.25+hole_tolerance, h=2.1, $fn=50, center=true); cylinder(r=5.25+hole_tolerance, h=2.1, $fn=50, center=true);
} }

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <misc-neutrik-d-plate.scad> use <misc-neutrik-d-plate.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <misc-neutrik-d-plate.scad> use <misc-neutrik-d-plate.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module neutrik_d_plate() { module neutrik_d_plate() {

82
src/parameters.scad Normal file
View File

@@ -0,0 +1,82 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
// adjustments
hole_tolerance = 0.15;
// M2
m2_screw_selftap_radius = 0.95;
// M3
m3_screw_selftap_radius = 1.3;
// M4
m4_bolt_radius = 2 + hole_tolerance;
m4_bolt_countersink_radius = 6.1 + hole_tolerance;
m4_bolt_hex_exterior_radius = 3.6 + hole_tolerance;
// 24mm button
small_button_radius = 12 + hole_tolerance;
// 30mm button
big_button_radius = 15 + hole_tolerance;
// JLF mount dimensions
lever_mount_x = 53;
lever_mount_y = 95;
lever_mount_z = 2;
// standard lever hole
lever_plate_hole = 12;
// case dimensions
// base frame box. reminder: top of inside (including mounts) is chopped by top_plate_z for plates
frame_x = 233;
frame_y = 208;
frame_z = 55;
// depth of the "lip" of the frame that the top plate sets into/supports the overhang
frame_wall = 4;
// per neutrik (mm)
neutrik_panel_thickness = 3;
// top plate, which can either be the whole plate ("inset") or the mounting frame for a plate that overhangs
top_plate_x = frame_x - (frame_wall * 2);
top_plate_y = frame_y - (frame_wall * 2);
top_plate_z = 5;
// how much the top plate x/y is expanded to overhang the frame
// note that this is relative to the top plate (so the wall is added back)
top_plate_overhang_amount = 8.5;
overhang_top_plate_x = top_plate_x + (frame_wall * 2) + (top_plate_overhang_amount * 2);
overhang_top_plate_y = top_plate_y + (frame_wall * 2) + (top_plate_overhang_amount * 2);
plate_to_frame_point_x = (top_plate_x/2)-10;
plate_to_frame_point_y = (top_plate_y/2)-10;
// frame interior that supports the top plates
panel_support_width = 5;
// neutrik D screw holes
neutrik_d_screw_radius = 1.6 + hole_tolerance;
neutrik_d_radius = 12 + hole_tolerance;
// additional button radius for decorative panels, etc.
decorative_radius_scale = 1.75;
jumbo_decorative_radius_scale = 2;

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-inset-dir_arc-plus-w-30mm-plus-one.scad> use <top-panel-inset-dir_arc-plus-w-30mm-plus-one.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_w_30mm_plus_one_panel() { module dir_arc_w_30mm_plus_one_panel() {

View File

@@ -0,0 +1,33 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
module top_panel_inset_lever_and_dir_arc_w_30mm() {
difference() {
union() {
topplate();
translate([(-top_plate_x/2)+55, (top_plate_y/2)-75, -((top_plate_z/2)+(lever_mount_z/2))]) levermountbase();
}
dir_arc_w_30mm();
translate([(-top_plate_x/2)+55, (top_plate_y/2)-75, 0]) levermountholes();
}
}
top_panel_inset_lever_and_dir_arc_w_30mm();

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-inset-lever.scad> use <top-panel-inset-lever.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
// combine the lever mount and generic plate, with mounting holes // combine the lever mount and generic plate, with mounting holes

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module namco_noir_plus_one_panel() { module namco_noir_plus_one_panel() {

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module namco_noir_plus_two_panel() { module namco_noir_plus_two_panel() {

View File

@@ -0,0 +1,28 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
use <top-panel-inset-sega-2p-plus-one-plus-control.scad>
module top_panel_inset_sega_2p_plus_one_plus_control_with_mount() {
top_panel_inset_sega_2p_plus_one_plus_control();
translate([30, -50, -(top_plate_z/2) - 3]) pcb_mount();
}
top_panel_inset_sega_2p_plus_one_plus_control_with_mount();

View File

@@ -0,0 +1,31 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
module top_panel_inset_sega_2p_plus_one_plus_control() {
difference() {
topplate();
sega_2p_plus_one();
rotate([0, 0, 180]) side_chopper();
translate([89, 30, 0]) button_24mm_hole();
}
}
top_panel_inset_sega_2p_plus_one_plus_control();

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module sega_2p_plus_one_panel() { module sega_2p_plus_one_panel() {

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module top_panel_left_lever_and_dir_arc_w_30mm() { module top_panel_left_lever_and_dir_arc_w_30mm() {

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
// combine the lever mount and generic plate, with mounting holes // combine the lever mount and generic plate, with mounting holes

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-middle-dir_arc-plus-w-30mm.scad> use <top-panel-middle-dir_arc-plus-w-30mm.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module top_panel_middle_dir_arc_w_30mm() { module top_panel_middle_dir_arc_w_30mm() {

View File

@@ -0,0 +1,31 @@
/* Copyright Brian Stephan 2023
*
* This file is part of the Buildable Stick System.
*
* The Buildable Stick System is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* The Buildable Stick System is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/
include <parameters.scad>
include <components.scad>
use <top-panel-right-sega-2p-plus-one-plus-control-with-mount.scad>
module top_panel_right_sega_2p_plus_one_plus_control_with_mount_with_oled() {
difference() {
top_panel_right_sega_2p_plus_one_plus_control_with_mount();
translate([75, 77.5, 0]) oled_ssd1306_mount_cutout();
}
translate([75, 77.5, 0.5]) oled_ssd1306_mount();
}
top_panel_right_sega_2p_plus_one_plus_control_with_mount_with_oled();

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-right-sega-2p-plus-one-plus-control.scad> use <top-panel-right-sega-2p-plus-one-plus-control.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module top_panel_right_sega_2p_plus_one_plus_control() { module top_panel_right_sega_2p_plus_one_plus_control() {

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
use <top-panel-right-sega-2p-plus-one.scad> use <top-panel-right-sega-2p-plus-one.scad>

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module top_panel_right_sega_2p_plus_one() { module top_panel_right_sega_2p_plus_one() {

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_24mm_6_button_panel() { module dir_arc_24mm_6_button_panel() {

View File

@@ -16,13 +16,13 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module dir_arc_plus_w_24mm_8_button_panel() { module dir_arc_plus_w_24mm_8_button_panel() {
difference() { difference() {
top_plate_with_raised_overhang(); top_plate_with_raised_overhang();
translate([-71.5, -top_plate_y/2+122.5, 0]) dir_arc_24mm_8_button_compressed(); translate([-80.5, top_plate_y/6, 0]) dir_arc_plus_w_24mm_8_button();
translate([-34.5, 51, 0]) button_24mm_hole();
} }
} }

View File

@@ -16,6 +16,7 @@
* the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>. * the Buildable Stick System. If not, see <https://www.gnu.org/licenses/>.
*/ */
include <parameters.scad>
include <components.scad> include <components.scad>
module top_panel_solo_lever_and_sega_2p_6_button() { module top_panel_solo_lever_and_sega_2p_6_button() {