key_interface_thickness = 1.484;
// Chosen to let board fit inside
-housing_inner_h = 8;
+housing_inner_h = 6;
housing_inner_w = 21;
+housing_flat = 8;
+housing_extra_l = 10;
thickness = 1.7;
pico_board_l = 51.0;
pico_board_w = 21.0;
+pico_board_h = 1.0;
pico_total_h = 3.7;
$fs = .1;
cylinder(h=slop, d = d);
}
-module pico_board(gap = 0) {
- board_h = 1.0;
- translate([-gap, -gap, -gap])
- cube([pico_board_l + 2*gap, pico_board_w + 2*gap, board_h + 2*gap]);
+module pico_board(length = pico_board_l, gap = 0) {
+ translate([-gap - length + pico_board_l, 0, -gap])
+ cube([length + 2*gap, pico_board_w, pico_board_h + 2*gap]);
}
module pico_w(hole_d = 2.1) {
}
module housing_shape(outline = thickness) {
- inner_squish = housing_inner_h / housing_inner_w;
housing_w = housing_inner_w + 2 * outline;
housing_h = housing_inner_h + 2 * outline;
- squish = housing_h / housing_w;
+ squish = housing_h / (housing_w - housing_flat);
scale([1, squish])
- circle(d = housing_w);
+ minkowski() {
+ circle(d = housing_w - housing_flat);
+ square([housing_flat, epsilon], center=true);
+ }
}
-module housing(length = pico_board_l - extra_flare) {
+module housing() {
+ length = pico_board_l - extra_flare;
+ translate([-housing_extra_l, 0, 0])
rotate([90, 0, 0])
rotate([0, 90, 0])
- linear_extrude(length)
+ linear_extrude(length + housing_extra_l)
difference() {
housing_shape();
housing_shape(0);
}
module at_board() {
- translate([0, -pico_board_w/2, -1])
+ translate([0, -pico_board_w/2, -pico_board_h])
children();
}
flare();
}
at_board()
- pico_board(board_gap);
+ pico_board(slop, board_gap);
}
}