Skip to content
Snippets Groups Projects
Commit 122148f8 authored by György Kurucz's avatar György Kurucz
Browse files

Added tobacco pusher model.

Added rotary encoder knob model.
parent 35591f73
Branches
No related tags found
No related merge requests found
s = [55, 63]; /* config 1
pcb = [55, 63, 1.65];
margin = 0.5; margin = 0.5;
lip = 1; lip = 1;
height = 12; height = 12;
corner_r = 2; corner_r = 2;
bottom_wall = 1; bottom_wall = 1;
top_height = 6.5;
top_part_thickness = 2;
*/
difference() { pcb = [45.02, 44.8, 1.75];
translate([0, 0, -height/2]) linear_extrude(height) minkowski() { margin = 0.7;
square([s.x, s.y], center=true); extend = [0, 8];
lip = [1, 1];
height = 15;
corner_r = 2;
bottom_wall = 1;
top_height = 20 - 5;
top_part_thickness = 2;
top_part_margin = 0.4;
module txt(t, s=4) {
text(t, font="DejaVu Sans Mono", size=s);
}
module outline() {
minkowski() {
square([pcb.x+extend.x, pcb.y+extend.y], center=true);
circle(r=corner_r, $fn=50); circle(r=corner_r, $fn=50);
} }
translate([0, 0, height/2]) cube([s.x + margin, s.y + margin, height], center=true);
translate([0, 0, bottom_wall]) cube([s.x - lip*2, s.y - lip*2, height], center=true);
} }
module bottom_part() {
translate([0, 0, height/2]) difference() {
translate([0, 0, -height/2]) linear_extrude(height) outline();
translate([0, 0, height/2]) cube([pcb.x + margin, pcb.y + margin, height], center=true);
translate([0, 0, bottom_wall]) cube([pcb.x - lip.x*2, pcb.y - lip.y*2, height], center=true);
}
}
module connectors() {
translate([-pcb.x/2, -pcb.y/2]) {
/* config1
translate([15, 1.5]) square([20, 25.5-1.5]); //inputs
translate([38, 1.5]) square([16, 25.5-1.5]); //dimmers
translate([35, 31-5/2]) square([8, 20]); //isp
translate([33, 31+15/2-5/2]) square([5, 5]); //isp notch
translate([16+3-0.6, 56]) square([18, 6]); //rpi
translate([8+1, 43]) square([9, 7]); //switches
translate([4+1-0.5, 28+2.5]) square([7, 10]);
*/
translate([14.02+18.4858/2, 12.95+16.4/2]) circle(r=7, $fn=30); //sw1
translate([31.895+10.75/2, 15.925+9.95/2]) circle(r=4, $fn=30);
}
}
module markings() {
translate([-pcb.x/2, -pcb.y/2]) {
/* config1
translate([pcb.x-3, pcb.y-36.5]) rotate(90) txt("Controller", 4.6);
//translate([13.5, 5.5]) rotate(90) txt("buses");
//translate([pcb.x+1.5, 4]) rotate(90) txt("dimmers", 3);
translate([21.5, pcb.y-14]) rotate(0) txt("rPi", 5);
//translate([31, 33]) rotate(90) txt("ISP");
translate([13, 30]) rotate(0) txt("+12V");
translate([13, 36]) rotate(0) txt("+5V");
translate([-1.5, 35]) rotate(0) txt("-", 7);
translate([-1.5, 29]) rotate(0) txt("-", 7);
*/
}
}
module top_part() {
difference() {
union() {
translate([0, 0, height]) linear_extrude(top_height) outline();
z = height/2 - pcb.z;
f = top_part_thickness/2;
translate([0, 0, height-z]) linear_extrude(z+f)
square([pcb.x+margin-top_part_margin, pcb.y+margin-top_part_margin], center=true);
}
linear_extrude(height+top_height-top_part_thickness) square([pcb.x - lip.x*2, pcb.y - lip.y*2], center=true);
linear_extrude(50) connectors();
t = top_part_thickness;
translate([0, 0, height+top_height-t/2]) linear_extrude(t) markings();
}
}
//difference() {
// bottom_part();
// translate([0, 0, 50+bottom_wall]) cube([20, pcb.y+extend.y, 100], center=true);
// cylinder(d=8, center=true, h=5, $fn=30);
//}
rotate([180, 0, 0])
//translate([0, 0, 3])
top_part();
\ No newline at end of file
interface_height = 5;
interface_margin = 0.25;
rod_height = 5.5;
outside_diameter = 11;
knob_height = 7;
knob_diameter = 25;
knob_corner_r = 2;
module outline() {
difference() {
circle(d=6, $fn=50);
translate([-5, 4.5-6/2]) square([10, 10]);
}
}
rotate([180, 0, 0]) difference() {
union() {
cylinder(d=outside_diameter, h = interface_height + rod_height + knob_height/2, $fn=60);
translate([0, 0, interface_height + rod_height]) {
cylinder(d=knob_diameter, h=knob_height/2, $fn=50);
minkowski() {
translate([0, 0, knob_corner_r]) cylinder(r=knob_diameter/2-knob_corner_r, h=knob_height-knob_corner_r*2, $fn=50);
sphere(r=knob_corner_r, $fn=50);
}
}
}
translate([0, 0, -1]) linear_extrude(interface_height+1) offset(interface_margin) outline();
}
base = [67, 5.5, 5.5];
shoulder = 6;
tab_height = 28;
tab_width = 20;
tab_thickness = 2;
module tab() {
t = (base.x - tab_width)/2;
m = -base.z/2;
polygon(points=[
[0, m], [base.x, m], [base.x, shoulder], [base.x-t, tab_height],
[t, tab_height], [0, shoulder]
]);
}
translate([0, base.y/2 + tab_thickness/2, base.z]) rotate([90, 0, 0]) linear_extrude(tab_thickness) tab();
cube(base);
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment