179 lines
4.5 KiB
OpenSCAD
179 lines
4.5 KiB
OpenSCAD
PCB_T = 1.6;
|
|
PCB_W = 58;
|
|
PCB_H = 74;
|
|
|
|
eps = 0.001;
|
|
|
|
Cover_O = 2.5; // O = Overhang
|
|
Cover_T_T = 2.0; // T_T = Top Thickness
|
|
Cover_B_T = 3.0; // B_T = Bottom Thickness
|
|
Wall_PCB_GAP = 0.25;
|
|
|
|
|
|
Drill_M3 = 3.5;
|
|
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 + 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],
|
|
[54.0, 70.0, 0],
|
|
[42.0, 46.5, 0],
|
|
[ 4.0, 21.0, 0],
|
|
[48.0, 23.5, 0]
|
|
];
|
|
|
|
MIDI_Plugs = [
|
|
[11.5, 13.335, 0],
|
|
[46.5, 13.335, 0]
|
|
];
|
|
|
|
SSD1306 = [15.875, 53.34 , 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 = [
|
|
9,
|
|
12,
|
|
9,
|
|
9
|
|
];
|
|
|
|
Screw_Area_Cutout_Offsets = [
|
|
+Screw_Area_Cutout_Widths[0]/2 - Mounting_Holes[0][0] - Cover_O,
|
|
-Screw_Area_Cutout_Widths[1]/2 + PCB_W - Mounting_Holes[1][0] + Cover_O,
|
|
+Screw_Area_Cutout_Widths[2]/2 - Mounting_Holes[2][0] - Cover_O,
|
|
-Screw_Area_Cutout_Widths[3]/2 + PCB_W - Mounting_Holes[3][0] + Cover_O
|
|
];
|
|
|
|
module Screw_Drill(drill)
|
|
{
|
|
translate([0,0,-50])
|
|
cylinder(h=100, d=drill, center=false, $fn=100);
|
|
}
|
|
|
|
module Screw_Ring_M3(height)
|
|
{
|
|
translate([0, 0, height/2])
|
|
difference()
|
|
{
|
|
cylinder(h=1*height, d=Screw_Ring_M3_Outer_Diameter, center=true, $fn=100);
|
|
cylinder(h=2*height, d=Screw_Ring_M3_Inner_Diameter, center=true, $fn=100);
|
|
}
|
|
}
|
|
|
|
module SSD1306_Cutout()
|
|
{
|
|
// Screw positions relative to the Display
|
|
// See http://www.lcdwiki.com/File:MC096-015.jpg
|
|
SSD1306_Screws = [
|
|
[+27.3/2-2, 2 ,0],
|
|
[-27.3/2+2, 2 ,0],
|
|
[+27.3/2-2, 27.8-2 ,0],
|
|
[-27.3/2+2, 27.8-2 ,0]
|
|
];
|
|
|
|
mirror([0,1,0])
|
|
translate([0,-2.54/2,0])
|
|
{
|
|
for (i = [0:3])
|
|
{
|
|
translate(SSD1306_Screws[i]) Screw_Drill(2.5);
|
|
}
|
|
|
|
translate([0, 1.5 ,0]) cube([4*2.54 , 2.54 , 20], center=true);
|
|
translate([0,14.27,0]) cube([27 , 20 , 20], center=true);
|
|
translate([0,25.77-0.01,0]) cube([14 , 3 , 20], center=true);
|
|
}
|
|
}
|
|
|
|
module GC9A01A_Cutout(thickness)
|
|
{
|
|
Screw_Holes = [
|
|
[+15, +06.2, 0],
|
|
[-15, +06.2, 0],
|
|
[+15, +36.2, 0],
|
|
[-15, +36.2, 0]
|
|
];
|
|
|
|
cube([20, 2, thickness], center=true);
|
|
|
|
hull()
|
|
{
|
|
translate([0, 21.1, 0])
|
|
cylinder(d=36.0, h=thickness, center=true, $fn = $preview ? 32 : 100);
|
|
|
|
translate([0, 42.0, 0])
|
|
cube([13, 0.1, thickness], center=true);
|
|
}
|
|
|
|
for (i = Screw_Holes) {
|
|
translate(i)
|
|
cylinder(r=1.27, h=thickness, center=true, $fn = $preview ? 32 : 100);
|
|
}
|
|
}
|
|
|
|
module GC9A01A_Cover_Cutout(thickness)
|
|
{
|
|
Screw_Holes = [
|
|
[+15, +06.2, 0],
|
|
[-15, +06.2, 0],
|
|
[+15, +36.2, 0],
|
|
[-15, +36.2, 0]
|
|
];
|
|
|
|
translate([0, 21.1, 0])
|
|
cylinder(d=36.0, h=thickness, center=true, $fn = $preview ? 32 : 100);
|
|
|
|
for (i = Screw_Holes) {
|
|
translate(i)
|
|
cylinder(r=1.27, h=thickness, center=true, $fn = $preview ? 32 : 100);
|
|
}
|
|
}
|
|
|
|
module GC9A01A_Cover_Plate(thickness, scale_factor)
|
|
{
|
|
Circle_Cutout_D = Screw_Pit_M3;
|
|
|
|
translate([0, 0, thickness/2])
|
|
difference()
|
|
{
|
|
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.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);
|
|
}
|
|
}
|
|
}
|
|
|
|
module Screw_Area_Cutout(width, offset, thickness)
|
|
{
|
|
translate([offset, 0, thickness/2 + 0.1])
|
|
cube([width, 5, thickness + 0.1], center=true);
|
|
}
|
|
|
|
module Screw_Area_Stripe(offset, thickness, scale_y, scale_z)
|
|
{
|
|
Width = PCB_W + Cover_O + eps;
|
|
|
|
translate([PCB_W/2, offset, thickness/2 + 0.1])
|
|
scale([1, scale_y, scale_z])
|
|
cube([Width, 10, thickness + 0.1], center=true);
|
|
} |