- Added datasheets of several components / connectors
- Advanced with housing design, but no finished yet
This commit is contained in:
BIN
Doc/Datasheet_Audio-Jack_Korean Hroparts Elec PJ-321A-4A.pdf
Normal file
BIN
Doc/Datasheet_Audio-Jack_Korean Hroparts Elec PJ-321A-4A.pdf
Normal file
Binary file not shown.
895
Doc/Datasheet_MIDI-Plug_MABPM 5S.pdf
Normal file
895
Doc/Datasheet_MIDI-Plug_MABPM 5S.pdf
Normal file
File diff suppressed because one or more lines are too long
BIN
Doc/Datasheet_MOLEX_2x2P 4P Micro-Fit.pdf
Normal file
BIN
Doc/Datasheet_MOLEX_2x2P 4P Micro-Fit.pdf
Normal file
Binary file not shown.
BIN
Doc/Datasheet_OMRON_Switch.pdf
Normal file
BIN
Doc/Datasheet_OMRON_Switch.pdf
Normal file
Binary file not shown.
46
Housing/MIDI_Lighter_Mic_Adapter.scad
Normal file
46
Housing/MIDI_Lighter_Mic_Adapter.scad
Normal file
@@ -0,0 +1,46 @@
|
||||
use <MCAD/boxes.scad>
|
||||
|
||||
|
||||
eps = 0.0001;
|
||||
|
||||
$preview = false;
|
||||
|
||||
// mirror([0, 0, 1])
|
||||
// {
|
||||
// translate([0, 0, 1-eps]) roundedBox([15, 74, 2], 15/2, true, $fn = $preview ? 32 : 100);
|
||||
// KandM_14510_Mount();
|
||||
// }
|
||||
|
||||
|
||||
module KandM_14510_Mount(floor_height = 1, cutout = false)
|
||||
{
|
||||
Pick_T = 1.0;
|
||||
Pick_H = 13;
|
||||
Pick_W = 60;
|
||||
|
||||
Outer_T = 7.5;
|
||||
Outer_H = Pick_H;
|
||||
Outer_W = 67.5;
|
||||
|
||||
Wall_T = 2.0;
|
||||
|
||||
if(cutout)
|
||||
{
|
||||
roundedBox([Outer_T + 2*Wall_T , Outer_W + 2*Wall_T, 1*Outer_H], (Outer_T + 2*Wall_T)/2, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
translate([0, 0, floor_height/2-eps])
|
||||
roundedBox([Outer_T + 2*Wall_T , Outer_W + 2*Wall_T, floor_height], (Outer_T + 2*Wall_T)/2, true, $fn = $preview ? 32 : 100);
|
||||
translate([0, 0, -Pick_H/2])
|
||||
{
|
||||
roundedBox([Pick_T, Pick_W, Pick_H], Pick_T/2, true, $fn = $preview ? 32 : 100);
|
||||
|
||||
difference()
|
||||
{
|
||||
roundedBox([Outer_T + 2*Wall_T , Outer_W + 2*Wall_T, 1*Outer_H], (Outer_T + 2*Wall_T)/2, true, $fn = $preview ? 32 : 100);
|
||||
roundedBox([Outer_T , Outer_W , 2*Outer_H], Outer_T/2 , true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
16
Housing/Pin_Header_Cut_Template.scad
Normal file
16
Housing/Pin_Header_Cut_Template.scad
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
|
||||
No_Of_Pins = 8;
|
||||
|
||||
Wall_T = 2;
|
||||
Wall_H = 7;
|
||||
|
||||
Inner_W = 2.54 * No_Of_Pins;
|
||||
Inner_T = 2.54;
|
||||
|
||||
|
||||
difference()
|
||||
{
|
||||
cube([Inner_W + 2*Wall_T, Inner_T + 2*Wall_T, Wall_H], center=true);
|
||||
cube([Inner_W, Inner_T, 2*Wall_H], center=true);
|
||||
}
|
||||
@@ -15,36 +15,35 @@ Ring_M3_H = 2;
|
||||
|
||||
Screw_Ring_M3_Outer_Diameter = 7.5;
|
||||
Screw_Ring_M3_Inner_Diameter = 5.5;
|
||||
Screw_Pit_M3 = 6.5;
|
||||
|
||||
Spacer_Top_Height = 10;
|
||||
Spacer_Bot_Height = 5;
|
||||
|
||||
Wall_T_H = Spacer_Top_Height + PCB_T/2; // T_H = Wall Top Height
|
||||
Wall_T_H = Spacer_Top_Height + PCB_T/2 + Cover_T_T; // T_H = Wall Top Height
|
||||
Wall_B_H = Spacer_Bot_Height + PCB_T/2; // B_H = Wall Bottom Height
|
||||
|
||||
Mounting_Holes = [
|
||||
[ 4.0, 70.0, 0],
|
||||
[45.0, 70.0, 0],
|
||||
[54.0, 70.0, 0],
|
||||
[42.0, 46.5, 0],
|
||||
[ 4.0, 21.0, 0],
|
||||
[48.0, 23.5, 0]
|
||||
];
|
||||
|
||||
Cable_Relief_Holder = [
|
||||
[10.5, 60.0, 0],
|
||||
[27.0, 60.0, 0]
|
||||
];
|
||||
|
||||
MIDI_Plugs = [
|
||||
[11.5, 13.335, 0],
|
||||
[46.5, 13.335, 0]
|
||||
];
|
||||
|
||||
SSD1306 = [15.875, 53.34 , 0];
|
||||
GC9A01A = [20.320, 20.32 , 0];
|
||||
GC9A01A = [20.320, 22.56 , 0];
|
||||
Rotary_Encoder = [48.895, 36.830, 0];
|
||||
Power_Plug = [49.530, 64.770, 0];
|
||||
Button = [59.055, 23.495, 0];
|
||||
USB_C = [53.975, 50.165, 0];
|
||||
MOLEX = [19.05 , 66.04 , 0];
|
||||
Audio_Jack = [29.00 , 8.255 , 0];
|
||||
|
||||
|
||||
Screw_Area_Cutout_Widths = [
|
||||
@@ -61,9 +60,6 @@ Screw_Area_Cutout_Offsets = [
|
||||
-Screw_Area_Cutout_Widths[3]/2 + PCB_W - Mounting_Holes[3][0] + Cover_O
|
||||
];
|
||||
|
||||
|
||||
|
||||
|
||||
module Screw_Drill(drill)
|
||||
{
|
||||
translate([0,0,-50])
|
||||
@@ -151,18 +147,18 @@ module GC9A01A_Cover_Cutout(thickness)
|
||||
|
||||
module GC9A01A_Cover_Plate(thickness, scale_factor)
|
||||
{
|
||||
Circle_Cutout_D = Screw_Ring_M3_Outer_Diameter*1.1/scale_factor;
|
||||
Circle_Cutout_D = Screw_Pit_M3;
|
||||
|
||||
translate([0, 0, thickness/2])
|
||||
difference()
|
||||
{
|
||||
translate([ 0, 20.5, 0]) roundedBox([40*scale_factor, 44*scale_factor, thickness], 3, true, $fn = $preview ? 32 : 100);
|
||||
translate([22, 26, 0]) cylinder(d=Circle_Cutout_D, h=3*thickness, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([ 0, 20, 0]) roundedBox([40*scale_factor, 47*scale_factor, thickness], 5, true, $fn = $preview ? 32 : 100);
|
||||
// translate([22, 24, 0]) cylinder(d=Circle_Cutout_D, h=3*thickness, center=true, $fn = $preview ? 32 : 100);
|
||||
|
||||
translate([-16.5, 0.5, 0]) {
|
||||
cylinder(d=Circle_Cutout_D, h=3*thickness, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([-Circle_Cutout_D/4, 0, 0]) cube([Circle_Cutout_D/2, Circle_Cutout_D, 3*thickness], center=true);
|
||||
translate([0, -Circle_Cutout_D/4, 0])cube([Circle_Cutout_D, Circle_Cutout_D/2, 3*thickness], center=true);
|
||||
translate([-16.3, -1.7, 0]) {
|
||||
// cylinder(d=Circle_Cutout_D, h=3*thickness, center=true, $fn = $preview ? 32 : 100);
|
||||
// translate([-Circle_Cutout_D/4, 0, 0]) cube([Circle_Cutout_D/2, Circle_Cutout_D, 3*thickness], center=true);
|
||||
translate([-2, -Circle_Cutout_D/4, 0]) cube([Circle_Cutout_D-4, Circle_Cutout_D/2, 3*thickness], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
use <MCAD/boxes.scad>
|
||||
use <MCAD/regular_shapes.scad>
|
||||
|
||||
|
||||
use <MIDI_Lighter_Mic_Adapter.scad>
|
||||
include <RP2350_MIDI_Lighter_PCB.scad>
|
||||
include <RP2350_MIDI_Lighter_Definition.scad>
|
||||
|
||||
|
||||
Show_FAD_Logo = true;
|
||||
Show_FAD_Logo = false;
|
||||
Show_PCB = false;
|
||||
Debug_Present = true;
|
||||
$preview = false;
|
||||
Alternative = true;
|
||||
|
||||
// Info //
|
||||
// This version has the walls of the top part mostly associated to the to cover
|
||||
|
||||
|
||||
|
||||
@@ -22,27 +21,37 @@ if(Show_PCB)
|
||||
translate([0,0,-PCB_T/2]) Spacer_Bot();
|
||||
}
|
||||
|
||||
Top();
|
||||
// Only for display purposes
|
||||
// translate([0, 0, eps])
|
||||
|
||||
// Top();
|
||||
Top_Wall(1);
|
||||
// Bottom();
|
||||
// rotate([0, 180, 0])
|
||||
// Display_GC9A01A_Cover();
|
||||
|
||||
|
||||
// color([1.0, 0.4, 0.4]) Bottom(Alternative);
|
||||
// color([0.4, 0.4, 1.0]) Bottom_Wall(Alternative);
|
||||
|
||||
|
||||
module Display_GC9A01A_Cover()
|
||||
{
|
||||
color([0.4, 1.0, 0.4], 1.5)
|
||||
translate([0, 0, +Spacer_Top_Height + PCB_T/2 + 5])
|
||||
translate(GC9A01A)
|
||||
difference() {
|
||||
GC9A01A_Cover_Plate(1, 1);
|
||||
GC9A01A_Cover_Cutout(10);
|
||||
color([0.4, 1.0, 0.4], 1.0)
|
||||
translate([0, 0, +Spacer_Top_Height + PCB_T/2 + Cover_T_T + 0.0])
|
||||
difference()
|
||||
{
|
||||
translate(GC9A01A)
|
||||
difference() {
|
||||
GC9A01A_Cover_Plate(1.0, 1);
|
||||
GC9A01A_Cover_Cutout(10);
|
||||
}
|
||||
Screw_Pits_M3(10);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module Top()
|
||||
{
|
||||
color([0.2, 0.8, 0.2])
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, +Spacer_Top_Height + PCB_T/2])
|
||||
@@ -53,27 +62,28 @@ module Top()
|
||||
union()
|
||||
{
|
||||
Top_Plate();
|
||||
// Top_Wall();
|
||||
translate([0, 0, +Cover_T_T]) Screw_Rings_M3();
|
||||
// translate([0, 0, +Cover_T_T]) Relief_Rings_M3();
|
||||
}
|
||||
|
||||
Screw_Holes_M3();
|
||||
|
||||
for (i = [0:1]) {
|
||||
translate([0, 0, Cover_T_T/2])
|
||||
translate(MIDI_Plugs[i])
|
||||
scale([1, 1, 10]) MIDI_Plug_Cutout();
|
||||
Top_Wall_Screw_Plates(0.6, -eps, true);
|
||||
translate([0, 0, +Cover_T_T]) Screw_Pits_M3(1);
|
||||
translate(Rotary_Encoder) Screw_Drill(7.5);
|
||||
translate(GC9A01A) GC9A01A_Cutout(5*Cover_T_T);
|
||||
|
||||
translate([0, 0, +Cover_T_T])
|
||||
{
|
||||
translate([0, 0, -1.0]) // Penetration Depth
|
||||
translate(Rotary_Encoder) cylinder(d=15, h=100, center=false, $fn = $preview ? 32 : 100);
|
||||
|
||||
translate([0, 0, -0.5]) // Penetration Depth
|
||||
translate(GC9A01A) GC9A01A_Cover_Plate(10, 1.02);
|
||||
}
|
||||
|
||||
translate(Rotary_Encoder) Screw_Drill(7.5);
|
||||
translate(GC9A01A) GC9A01A_Cutout(5*Cover_T_T);
|
||||
translate([0, 0, +Cover_T_T-0.5])
|
||||
translate(GC9A01A) GC9A01A_Cover_Plate(10, 1.01);
|
||||
translate([0, 0, -Spacer_Top_Height - PCB_T/2]) PCB_Cutouts_Top_Plate();
|
||||
}
|
||||
|
||||
for (i = [0:1]) {
|
||||
translate([0, 0, Cover_T_T]) translate(MIDI_Plugs[i]) MIDI_Plug_Arc();
|
||||
for (i = MIDI_Plugs) {
|
||||
translate([0, 0, Cover_T_T]) translate(i) MIDI_Plug_Arc();
|
||||
}
|
||||
|
||||
if(Show_FAD_Logo == true) {
|
||||
@@ -85,147 +95,207 @@ module Top()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PCB_Cutouts_Top();
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Wall()
|
||||
{
|
||||
translate([PCB_W/2, PCB_H/2, -Wall_T_H/2])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, 1*Wall_T_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
roundedBox([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, 2*Wall_T_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
// Internak Support Structures
|
||||
translate([+PCB_W/2+Cover_O/2, -13, 0]) translate([-5/2, 0, PCB_T/2]) cube([5, 2, Wall_T_H-PCB_T], center=true);
|
||||
translate([Cover_O/4, -PCB_H/2-Cover_O/2, 0]) translate([-1/2, 5/2, PCB_T/2]) cube([2, 5, Wall_T_H-PCB_T], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Plate()
|
||||
{
|
||||
Cover_O_Factor = 0.9;
|
||||
translate([PCB_W/2, PCB_H/2, Cover_T_T/2])
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, Cover_T_T], 2, true, $fn = $preview ? 32 : 100);
|
||||
// roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, Cover_T_T], 2, true, $fn = $preview ? 32 : 100);
|
||||
roundedBox([PCB_W + Cover_O_Factor*Cover_O, PCB_H + Cover_O_Factor*Cover_O, Cover_T_T], 1.0, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
module Bottom(Alternative)
|
||||
module Top_Wall(gallery_width = 1)
|
||||
{
|
||||
translate([0, 0, -Spacer_Bot_Height - PCB_T/2])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, -Cover_B_T])
|
||||
union()
|
||||
{
|
||||
Bottom_Plate(Alternative);
|
||||
|
||||
translate([0, 0, -1])
|
||||
for (i = [0:3]) {
|
||||
translate(Mounting_Holes[i]) cylinder(h=1, d=Screw_Ring_M3_Outer_Diameter, center=false, $fn = $preview ? 32 : 100);
|
||||
translate([PCB_W/2, PCB_H/2, +Wall_T_H/2])
|
||||
difference() {
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, 1*Wall_T_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
cube([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, 2*Wall_T_H], center=true);
|
||||
}
|
||||
|
||||
translate([0, 0, -1-Ring_M3_H]) Screw_Rings_M3();
|
||||
Top_Wall_Gallery(gallery_width);
|
||||
}
|
||||
|
||||
for (i = [0:3]) {
|
||||
// translate([0, 0, -Cover_B_T/2]) translate(Mounting_Holes[i])
|
||||
// scale(1.1) Screw_Area_Cutout(Screw_Area_Cutout_Widths[i], Screw_Area_Cutout_Offsets[i], Cover_B_T/2);
|
||||
|
||||
translate([0, 0, -Cover_B_T/2]) Screw_Area_Stripe(Mounting_Holes[i][1], Cover_B_T/2, 1.1, 1.5);
|
||||
|
||||
translate([PCB_W/2, PCB_H/2, +Wall_T_H/2])
|
||||
{
|
||||
Top_Wall_Remove_Part("top", Wall_T_H-Cover_T_T/2, 10.5, MOLEX[0]);
|
||||
Top_Wall_Remove_Part("bottom", 3.5, 10, Audio_Jack[0]);
|
||||
Top_Wall_Remove_Part("right", 6.5, 3.5, Button[1]);
|
||||
Top_Wall_Remove_Part("right", PCB_T/2+2.5, 16, USB_C[1]);
|
||||
|
||||
// Cutout for Debug Connector
|
||||
if(Debug_Present) {
|
||||
Top_Wall_Remove_Part("left", PCB_T/2+6, 7, 28.575);
|
||||
}
|
||||
}
|
||||
PCB_Cutouts_Top_Wall();
|
||||
}
|
||||
|
||||
Screw_Holes_M3();
|
||||
translate([0, PCB_H/2 + 4, 0]) Bottom_Zip_Cutout(PCB_W/3);
|
||||
Top_Wall_Screw_Plates(0.5, Spacer_Top_Height + PCB_T/2);
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Wall_Remove_Part(wall_section, height, length, position)
|
||||
{
|
||||
Wall_T = Cover_O/2;
|
||||
// Wall_XY = 0;
|
||||
Wall_XY = wall_section == "right" ? +PCB_W/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "left" ? -PCB_W/2-Cover_O/2-Wall_T/2 :
|
||||
wall_section == "top" ? +PCB_H/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "bottom"? -PCB_H/2-Cover_O/2-Wall_T/2 : 0;
|
||||
|
||||
if(wall_section == "right" || wall_section == "left")
|
||||
{
|
||||
translate([Wall_XY, position-PCB_H/2, -Wall_T_H/2+height/2 - eps])
|
||||
cube([10*Wall_T, length, height], center=true);
|
||||
}
|
||||
else if(wall_section == "top" || wall_section == "bottom")
|
||||
{
|
||||
translate([position-PCB_W/2, Wall_XY, -Wall_T_H/2+height/2 - eps])
|
||||
cube([length, 10*Wall_T, height], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module Top_Wall_Screw_Plates(height, height_offset, cutout=false)
|
||||
{
|
||||
Screw_Plate_Size = [
|
||||
[10, 10, height],
|
||||
[10, 8, height],
|
||||
[ 0, 0, 0],
|
||||
[10, 7, height],
|
||||
[16, 7, height]
|
||||
];
|
||||
|
||||
Screw_Plate_Offset = [
|
||||
[-1, +1, height/2 + height_offset],
|
||||
[+1, +2, height/2 + height_offset],
|
||||
[ 0, 0, height/2 + height_offset],
|
||||
[-1, 0, height/2 + height_offset],
|
||||
[+4, 0, height/2 + height_offset]
|
||||
];
|
||||
|
||||
for (i = [0:4]) {
|
||||
translate(Mounting_Holes[i])
|
||||
|
||||
if(cutout) {
|
||||
translate(Screw_Plate_Offset[i]) scale([1.1, 1.1, 1]) cube(Screw_Plate_Size[i], center=true);
|
||||
}
|
||||
else {
|
||||
difference() {
|
||||
translate(Screw_Plate_Offset[i]) roundedBox(Screw_Plate_Size[i], 1, true);
|
||||
Screw_Drill(Drill_M3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Wall(Alternative)
|
||||
module Top_Wall_Gallery(gallery_width=1)
|
||||
{
|
||||
Wall_H = Alternative == false ? Wall_B_H : Wall_B_H + Cover_B_T;
|
||||
|
||||
translate([PCB_W/2, PCB_H/2, -Wall_H/2])
|
||||
translate([PCB_W/2, PCB_H/2, PCB_T/2 + Spacer_Top_Height -1/2])
|
||||
difference()
|
||||
{
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, 1*Wall_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
|
||||
translate([0, 0, Wall_B_H/2-0.001])
|
||||
cube([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, 1*Wall_B_H], center=true);
|
||||
|
||||
translate([0, 0, -Wall_B_H/2])
|
||||
cube([PCB_W - 0.0*Cover_O, PCB_H - 0.0*Cover_O, 1*Wall_B_H], center=true);
|
||||
cube([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, 1], center=true);
|
||||
cube([PCB_W + 1*Cover_O - 2*gallery_width, PCB_H + 1*Cover_O - 2*gallery_width, 2], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
translate([0, PCB_H/2 + 4, -Spacer_Bot_Height - PCB_T/2])
|
||||
Bottom_Zip_Guide(3);
|
||||
module Bottom()
|
||||
{
|
||||
color([0.8, 0.8, 0.0])
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, -Spacer_Bot_Height - PCB_T/2])
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([0, 0, -Cover_B_T])
|
||||
union()
|
||||
{
|
||||
difference()
|
||||
{
|
||||
Bottom_Plate();
|
||||
translate([PCB_W/2, PCB_H/2, 0]) KandM_14510_Mount(1, true);
|
||||
}
|
||||
translate([0, 0, Cover_B_T-eps]) Bottom_Wall(1.0);
|
||||
translate([PCB_W/2, PCB_H/2, 5.5]) KandM_14510_Mount();
|
||||
}
|
||||
|
||||
translate([0, 0, -Wall_B_H])
|
||||
Screw_Holes_M3();
|
||||
translate([0, 0, -Cover_B_T]) mirror([0, 0, 1]) Screw_Pits_M3(1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
PCB_Cutouts_From_Bottom();
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Wall(plate_transition = 1)
|
||||
{
|
||||
translate([PCB_W/2, PCB_H/2, +Wall_B_H/2])
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
for (i = [0:3]) {
|
||||
// translate([0, 0, -Cover_B_T/2]) translate(Mounting_Holes[i])
|
||||
// Screw_Area_Cutout(Screw_Area_Cutout_Widths[i], Screw_Area_Cutout_Offsets[i], Cover_B_T/2);
|
||||
translate([0, 0, -Cover_B_T/2]) Screw_Area_Stripe(Mounting_Holes[i][1], Cover_B_T/2, 1, 1);
|
||||
}
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, 1*Wall_B_H], 2, true, $fn = $preview ? 32 : 100);
|
||||
|
||||
Bottom_Wall_Add_Part("right" , PCB_T/2 , 9 , Power_Plug[1]-2.4);
|
||||
Bottom_Wall_Add_Part("right" , PCB_T/2+2.5 , 3 , Button[1]);
|
||||
Bottom_Wall_Add_Part("right" , PCB_T/2+2.0 , 16 , USB_C[1]);
|
||||
Bottom_Wall_Add_Part("top" , PCB_T/2 , 10 , MOLEX[0]);
|
||||
Bottom_Wall_Add_Part("bottom" , 3.2 , 9.5 , Audio_Jack[0]);
|
||||
// Bottom_Wall_Add_Part("bottom" , PCB_T/2+2.5 , PCB_W-1 , PCB_W/2);
|
||||
|
||||
// for (i = MIDI_Plugs) {
|
||||
// Bottom_Wall_Add_Part("bottom", PCB_T/2+Spacer_Top_Height, 22, i[0]);
|
||||
// }
|
||||
}
|
||||
union()
|
||||
{
|
||||
hull()
|
||||
{
|
||||
translate([0, 0, +Wall_B_H/2 + plate_transition]) cube([PCB_W + 1*Cover_O, PCB_H + 1*Cover_O, 2*Wall_B_H], center=true);
|
||||
translate([0, 0, -Wall_B_H/2-eps]) cube([PCB_W + 1*Cover_O - 2*plate_transition , PCB_H + 1*Cover_O - 2*plate_transition, eps], center=true);
|
||||
}
|
||||
translate([0, 0, eps-Wall_B_H]) cube([PCB_W + 1*Cover_O - 2*plate_transition , PCB_H + 1*Cover_O - 2*plate_transition, Wall_B_H], center=true);
|
||||
}
|
||||
Screw_Holes_M3();
|
||||
}
|
||||
|
||||
// USB Cover
|
||||
translate([-3*Cover_O/4, 33, PCB_T/2]) cube([Cover_O/2, 9, PCB_T], center=true);
|
||||
|
||||
// Strip Cover at the front
|
||||
Relief_Wall_X = Cable_Relief_Holder[1][0] - Cable_Relief_Holder[0][0] + Screw_Ring_M3_Outer_Diameter-1;
|
||||
Relief_Wall_Z = 8.5;
|
||||
translate([Cable_Relief_Holder[0][0], PCB_H, 0])
|
||||
translate([Relief_Wall_X/2 - Screw_Ring_M3_Outer_Diameter/2 + 0.5, 3*Cover_O/4, Relief_Wall_Z/2]) cube([Relief_Wall_X, Cover_O/2, Relief_Wall_Z], center=true);
|
||||
|
||||
// Button Cover
|
||||
translate([PCB_W + 3*Cover_O/4, Button[1], PCB_T/2]) cube([Cover_O/2, 7, PCB_T], center=true);
|
||||
|
||||
// Power Plug Cover
|
||||
translate([PCB_W + 3*Cover_O/4, Power_Plug[1], PCB_T/2]) cube([Cover_O/2, 9, PCB_T], center=true);
|
||||
}
|
||||
|
||||
module Bottom_Plate(Alternative)
|
||||
module Bottom_Wall_Add_Part(wall_section, height, length, position)
|
||||
{
|
||||
Wall_T = Cover_O/2;
|
||||
// Wall_XY = 0;
|
||||
Wall_XY = wall_section == "right" ? +PCB_W/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "left" ? -PCB_W/2-Cover_O/2-Wall_T/2 :
|
||||
wall_section == "top" ? +PCB_H/2+Cover_O/2+Wall_T/2 :
|
||||
wall_section == "bottom"? -PCB_H/2-Cover_O/2-Wall_T/2 : 0;
|
||||
|
||||
if(wall_section == "right" || wall_section == "left")
|
||||
{
|
||||
translate([Wall_XY, position-PCB_H/2, Wall_B_H/2 + height/2 - eps])
|
||||
cube([Wall_T, length, height], center=true);
|
||||
}
|
||||
else if(wall_section == "top" || wall_section == "bottom")
|
||||
{
|
||||
translate([position-PCB_W/2, Wall_XY, Wall_B_H/2 + height/2 - eps])
|
||||
cube([length, Wall_T, height], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Plate()
|
||||
{
|
||||
translate([PCB_W/2, PCB_H/2, Cover_B_T/2])
|
||||
if(Alternative == false)
|
||||
{
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, Cover_B_T], 2, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
else
|
||||
{
|
||||
roundedBox([PCB_W - 0.25*Cover_O, PCB_H - 0.25*Cover_O, Cover_B_T], 1, true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
roundedBox([PCB_W + 2*Cover_O, PCB_H + 2*Cover_O, Cover_B_T], 2, true, $fn = $preview ? 32 : 100);
|
||||
|
||||
module Bottom_Zip_Guide(Cube_Height)
|
||||
{
|
||||
translate([PCB_W/2, 5, 0])
|
||||
{
|
||||
difference()
|
||||
{
|
||||
translate([0, -5, Cube_Height/2]) cube([PCB_W + 2*Cover_O, 10, Cube_Height], center=true);
|
||||
translate([0, -5, -1]) rotate([0, 90, 90]) oval_prism(12, 17.4, 3.5, center=true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module Bottom_Zip_Cutout(Center_Offset)
|
||||
{
|
||||
Width = 3;
|
||||
Height = 10;
|
||||
|
||||
translate([PCB_W/2 - Center_Offset, 0, 0]) rotate([0,+45, 0]) cube([Width, Height, 100], center=true);
|
||||
translate([PCB_W/2 + Center_Offset, 0, 0]) rotate([0,-45, 0]) cube([Width, Height, 100], center=true);
|
||||
}
|
||||
|
||||
module MIDI_Plug_Cutout()
|
||||
@@ -246,8 +316,8 @@ module MIDI_Plug_Arc()
|
||||
difference() {
|
||||
translate([0, -eps, 0])
|
||||
intersection() {
|
||||
translate([0, 4.5, 0]) MIDI_Plug_Arc_Base(4.5, true);
|
||||
rotate([0, 90, 0]) oval_prism(20.5, 5, 8, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([0, 4.3, 0]) MIDI_Plug_Arc_Base(4.3, true);
|
||||
rotate([0, 90, 0]) oval_prism(20.5, 4, 8, center=true, $fn = $preview ? 32 : 100);
|
||||
|
||||
// hull() {
|
||||
// rotate([ 0, 0, 0]) MIDI_Plug_Arc_Base(0.1);
|
||||
@@ -274,4 +344,4 @@ module MIDI_Plug_Arc_Base(height, filled)
|
||||
}
|
||||
translate([0, -height/2+0.01, -5]) cube([40, 2*height, 10], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
use <MCAD/boxes.scad>
|
||||
include <NopSCADlib/core.scad>
|
||||
include <RP2350_MIDI_Lighter_Definition.scad>
|
||||
|
||||
use <MCAD/boxes.scad>
|
||||
include <NopSCADlib/vitamins/pcb.scad>
|
||||
|
||||
|
||||
module PCB()
|
||||
{
|
||||
@@ -16,23 +19,53 @@ module PCB()
|
||||
Screw_Holes_M3();
|
||||
}
|
||||
|
||||
translate([0, 0, PCB_T/2]) translate(Power_Plug) Power_Plug();
|
||||
translate([0, 0, PCB_T/2]) translate(Button) Button();
|
||||
translate([0, 0, PCB_T/2]) translate(Power_Plug) Power_Plug();
|
||||
translate([0, 0, PCB_T/2]) translate(Button) Button();
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(false);
|
||||
translate([0, 0, PCB_T/2]) translate(MOLEX) MOLEX_2x2P(false);
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(false);
|
||||
for (i = MIDI_Plugs) {
|
||||
translate(i) MIDI_Plug_MABPM_5S(false);
|
||||
}
|
||||
// translate([0, 0, PCB_T/2]) translate(Rotary_Encoder) mirror([0, 0, 1]) potentiometer(KY_040_encoder, 1, 10);
|
||||
}
|
||||
|
||||
module PCB_Cutouts_Top()
|
||||
module PCB_Cutouts_Top_Plate()
|
||||
{
|
||||
translate([0, 0, PCB_T/2-0.3]) translate(Power_Plug) Power_Plug_Cutout();
|
||||
translate([0, 0, PCB_T/2-0.5]) translate(Button) Button_Cutout();
|
||||
translate([0, 0, PCB_T/2-0.0]) translate([0, 33, 0]) USB_Cutout();
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(true);
|
||||
translate([0, 0, PCB_T/2-0.3]) translate(Power_Plug) Power_Plug_Cutout();
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(true);
|
||||
translate(MOLEX)
|
||||
translate([0, 10, PCB_T/2+Spacer_Top_Height+Cover_T_T/4-eps]) cube([5, 18, Cover_T_T/2], center=true);
|
||||
|
||||
for (i = MIDI_Plugs) {
|
||||
translate([0, 0, Cover_T_T/2])
|
||||
translate(i)
|
||||
scale([1, 1, 10]) MIDI_Plug_Cutout();
|
||||
}
|
||||
}
|
||||
|
||||
module PCB_Cutouts_Top_Wall()
|
||||
{
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(true);
|
||||
translate([0, 0, PCB_T/2-0.3]) translate(Power_Plug) Power_Plug_Cutout();
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(true);
|
||||
translate(MOLEX)
|
||||
translate([0, 10, PCB_T/2+Spacer_Top_Height+Cover_T_T/4-eps]) cube([5, 18, Cover_T_T/2], center=true);
|
||||
|
||||
for (i = MIDI_Plugs) {
|
||||
translate(i) MIDI_Plug_MABPM_5S(true);
|
||||
}
|
||||
}
|
||||
|
||||
module PCB_Cutouts_From_Bottom()
|
||||
{
|
||||
translate([0, 0, PCB_T/2-0.3 + 09.7]) translate(Power_Plug) Power_Plug_Cutout_For_Bottom();
|
||||
translate([0, 0, PCB_T/2-0.5]) translate(Button) Button_Cutout_For_Bottom();
|
||||
translate([0, 0, 0]) translate([0, 33, 0]) USB_Cutout_Small();
|
||||
translate([0, 0, 0]) translate([0, 33, 0]) Adafruit_QT_Py_Cutout();
|
||||
translate([0, 0, PCB_T/2]) translate(USB_C) usb_C(true);
|
||||
translate([0, 0, PCB_T/2]) translate(Power_Plug) Power_Plug(true);
|
||||
translate([0, 0, PCB_T/2]) translate(Audio_Jack) Audio_Jack(true);
|
||||
for (i = MIDI_Plugs) {
|
||||
translate(i) MIDI_Plug_MABPM_5S(true);
|
||||
}
|
||||
}
|
||||
|
||||
module Screw_Holes_M3()
|
||||
@@ -42,6 +75,14 @@ module Screw_Holes_M3()
|
||||
}
|
||||
}
|
||||
|
||||
module Screw_Pits_M3(depth)
|
||||
{
|
||||
translate([0, 0, -depth])
|
||||
for (i = Mounting_Holes) {
|
||||
translate(i) cylinder(d=Screw_Pit_M3, h=100, center=false, $fn=100);
|
||||
}
|
||||
}
|
||||
|
||||
module Screw_Rings_M3()
|
||||
{
|
||||
for (i = Mounting_Holes) {
|
||||
@@ -113,8 +154,10 @@ module Button_Cutout_For_Bottom()
|
||||
cube([3*Button_X, 3.5, 3.5], center=true);
|
||||
}
|
||||
|
||||
module Power_Plug()
|
||||
module Power_Plug(cutout = false)
|
||||
{
|
||||
Scale_Cube = cutout == true ? [2, 1.1, 1] : [1, 1, 1];
|
||||
|
||||
color([0.1, 0.1, 0.1])
|
||||
translate([10.625, -2.4, 0])
|
||||
difference()
|
||||
@@ -122,14 +165,18 @@ module Power_Plug()
|
||||
translate([-3.5, 0, 0])
|
||||
union()
|
||||
{
|
||||
scale(Scale_Cube)
|
||||
translate([3.5/2, 0, 11/2]) cube([ 3.5, 9, 11.0], center=true);
|
||||
translate([-10.9/2, 0, 6.4/2]) cube([10.9, 9, 6.4], center=true);
|
||||
translate([-10.9/2, 0, 6.4]) rotate([0, 90, 0]) cylinder(h=10.9, d=9, center=true, $fn=60);
|
||||
}
|
||||
|
||||
translate([-9.2/2, 0, 6.4])
|
||||
rotate([0, 90, 0])
|
||||
cylinder(h=9.2+1, d=6.3, center=true, $fn=60);
|
||||
if(cutout == false)
|
||||
{
|
||||
translate([-9.2/2, 0, 6.4])
|
||||
rotate([0, 90, 0])
|
||||
cylinder(h=9.2+1, d=6.3, center=true, $fn=60);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,8 +189,16 @@ module Power_Plug_Cutout()
|
||||
Plug_X = 30;
|
||||
Plug_Z = 20;
|
||||
|
||||
translate([+Plug_X/2-Plug_D+5.08, -2.4, -Plug_Z/2 + Plug_H])
|
||||
cube([Plug_X, Plug_W, Plug_Z], center=true);
|
||||
// #translate([0, -2.4, -Plug_Z/2 + Plug_H])
|
||||
// cube([Plug_X, Plug_W, Plug_Z], center=true);
|
||||
|
||||
translate([0, 0, 0.5])
|
||||
translate([10.625, -2.4, 0])
|
||||
translate([-3.5, 0, 0])
|
||||
{
|
||||
translate([3.5/2, 0, 11/2-4/2]) scale([1.2, 1.2, 1.0]) cube([ 3.5, 9, 11.0+4], center=true);
|
||||
translate([-10.9/2, 0, 6.4]) scale([1.0, 1.5, 1.023]) rotate([0, 90, 0]) cylinder(h=10.9, d=9, center=true, $fn=60);
|
||||
}
|
||||
}
|
||||
|
||||
module Power_Plug_Cutout_For_Bottom()
|
||||
@@ -163,46 +218,136 @@ module Power_Plug_Cutout_For_Bottom()
|
||||
cylinder(d=11, h=Plug_X, center=true, $fn=60);
|
||||
}
|
||||
|
||||
module USB_Cutout()
|
||||
module MOLEX_2x2P(cutout = false)
|
||||
{
|
||||
USB_H = 3.2;
|
||||
USB_W = 9;
|
||||
USB_D = 22;
|
||||
|
||||
USB_Y = 9.5;
|
||||
USB_Z = 20;
|
||||
|
||||
|
||||
PCB_H = 1.6;
|
||||
PCB_W = 18;
|
||||
PCB_D = 22;
|
||||
if(cutout == false)
|
||||
{
|
||||
color([0.76, 0.76, 0.76])
|
||||
{
|
||||
translate([-1.5, -1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=8.7, center=false, $fn=4);
|
||||
translate([+1.5, -1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=8.7, center=false, $fn=4);
|
||||
|
||||
PCB_X = 40;
|
||||
PCB_Z = 5;
|
||||
|
||||
translate([0, 0, -USB_Z/2 + PCB_H + USB_H - 0.5]) cube([USB_D, USB_Y, USB_Z], center=true);
|
||||
// translate([-PCB_X/2+PCB_D, 0, -PCB_Z/2 + PCB_H]) cube([PCB_X, PCB_W, PCB_Z], center=true);
|
||||
translate([-1.5, -1.5, 8.7-3.18-0.7*1.02/2]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10, center=false, $fn=4);
|
||||
translate([+1.5, -1.5, 8.7-3.18-0.7*1.02/2]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10, center=false, $fn=4);
|
||||
|
||||
translate([-1.5, +1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=3.18, center=false, $fn=4);
|
||||
translate([+1.5, +1.5, -3.18]) rotate([0, 0, 45]) cylinder(d=1.02, h=3.18, center=false, $fn=4);
|
||||
|
||||
translate([-1.5, +1.5, 7.4/2 - 1.25-0.3]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10-3, center=false, $fn=4);
|
||||
translate([+1.5, +1.5, 7.4/2 - 1.25-0.3]) rotate([-90, 45, 0]) cylinder(d=1.02, h=10-3, center=false, $fn=4);
|
||||
}
|
||||
}
|
||||
|
||||
color([0.2, 0.2, 0.2])
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
if(cutout == false)
|
||||
{
|
||||
translate([0, +5.82, -3.18]) rotate([0, 0, 45]) cylinder(d=3.2, h=3.18, center=false, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
translate([0, +7.57/2+0.828, 7.4/2]) cube([10.1 , 7.57, 7.4], center=true);
|
||||
translate([0, +7.57+0.828 + 1.28/2, 7.4/2]) cube([ 9.75, 1.28, 7.4], center=true);
|
||||
|
||||
translate([0, +7.57+0.828 + 1.28, 7.4/2]) hull()
|
||||
{
|
||||
translate([0, 0, 0]) cube([ 9.75, 0.01, 7.4], center=true);
|
||||
translate([0, 1.3, 0]) cube([ 7.15, 0.01, 7.4], center=true);
|
||||
}
|
||||
|
||||
}
|
||||
if(cutout == false)
|
||||
{
|
||||
translate([0, 10, 7.4/2])
|
||||
for (i = [-1:2:1])
|
||||
{
|
||||
for (j = [-1:2:1])
|
||||
{
|
||||
translate([i*(2.5/2 + 0.3), 0, j*(2.5/2 + 0.3)]) cube([2.5, 7, 2.5], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module USB_Cutout_Small()
|
||||
module Audio_Jack(cutout = false)
|
||||
{
|
||||
USB_H = 3.2;
|
||||
USB_W = 9;
|
||||
USB_D = 22;
|
||||
|
||||
USB_Y = 9.5;
|
||||
USB_Z = 3.5;
|
||||
|
||||
|
||||
PCB_H = 1.6;
|
||||
PCB_W = 18;
|
||||
PCB_D = 22;
|
||||
color([0.2, 0.2, 0.2])
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
translate([0, -11.5/2+4.25, 5.2/2]) cube([6.5, 11.5, 5.2], center=true);
|
||||
translate([0, -4.25-2.5, 5/2])
|
||||
rotate([90, 0, 0]) cylinder(d=5, h=2.5, center=false);
|
||||
}
|
||||
|
||||
PCB_X = 40;
|
||||
PCB_Z = 5;
|
||||
|
||||
translate([0, 0.5, USB_Z/2 + PCB_H + 1.0])
|
||||
rotate([0, 90, 0])
|
||||
roundedBox([USB_Z, USB_Y, USB_D], 1, true, $fn = $preview ? 32 : 100);
|
||||
// cube([USB_D, USB_Y, USB_Z], center=true);
|
||||
translate([0, -4.25+8, 5/2])
|
||||
rotate([90, 0, 0]) cylinder(d=3.6, h=20, center=false);
|
||||
}
|
||||
|
||||
if(cutout == true)
|
||||
{
|
||||
translate([0, -4.25+8, 5/2])
|
||||
rotate([90, 0, 0]) cylinder(d=5, h=20, center=false);
|
||||
}
|
||||
}
|
||||
|
||||
module MIDI_Plug_MABPM_5S(cutout = false)
|
||||
{
|
||||
color([0.76, 0.76, 0.76])
|
||||
{
|
||||
translate([+0.0, +0.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([+5.0, +2.5, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([-5.0, +2.5, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([+7.5, +0.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
translate([-7.5, +0.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=8.2, center=false, $fn=4);
|
||||
|
||||
translate([+5.0, -10.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=4.2, center=false, $fn=4);
|
||||
translate([-5.0, -10.0, -4.2]) rotate([0, 0, 45]) cylinder(d=1.4, h=4.2, center=false, $fn=4);
|
||||
}
|
||||
|
||||
difference()
|
||||
{
|
||||
union()
|
||||
{
|
||||
color([0.2, 0.2, 0.2])
|
||||
{
|
||||
translate([0, -5, 10.2/2]) cube([18, 10, 10.2], center=true);
|
||||
translate([0, -5, 10.2]) rotate([90, 0, 0]) cylinder(h=10, d=15.7, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([+0.5, -0.5-10-0, 20.35/2]) cube([19.5, 1.0, 20.35], center=true);
|
||||
translate([-0.5, -0.5-10-1, 20.35/2]) cube([19.5, 1.0, 20.35], center=true);
|
||||
}
|
||||
color([0.76, 0.76, 0.76])
|
||||
difference()
|
||||
{
|
||||
translate([0, -0.1/2-10-2-eps, 20.35/2]) cube([18, 0.1, 20.35], center=true);
|
||||
translate([0, -10-2, 20.35/2]) rotate([90, 0, 0]) cylinder(h=5, d=14, center=true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
}
|
||||
|
||||
union()
|
||||
{
|
||||
translate([0, -10-2, 20.35/2])
|
||||
rotate([90, 0, 0])
|
||||
difference()
|
||||
{
|
||||
cylinder(h= 5, d=13.60, center=true, $fn = $preview ? 32 : 100);
|
||||
cylinder(h=10, d=11.44, center=true, $fn = $preview ? 32 : 100);
|
||||
}
|
||||
|
||||
translate([0, 0, 15.0]) cube([2.5, 100, 2], center=true);
|
||||
translate([0, 100/2-10+eps, 17.0]) cube([2.5, 100, 4], center=true);
|
||||
}
|
||||
}
|
||||
|
||||
if(cutout == true)
|
||||
{
|
||||
union()
|
||||
{
|
||||
translate([0, -10-2, 20.35/2]) rotate([90, 0, 0]) cylinder(h=50, d=18, center=true, $fn = $preview ? 32 : 100);
|
||||
translate([0, -10-2, 20.35/2+9]) cube([18, 50, 18], center=true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user