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
s = [55, 63];
/* config 1
pcb = [55, 63, 1.65];
margin = 0.5;
lip = 1;
height = 12;
corner_r = 2;
bottom_wall = 1;
top_height = 6.5;
top_part_thickness = 2;
*/
difference() {
translate([0, 0, -height/2]) linear_extrude(height) minkowski() {
square([s.x, s.y], center=true);
circle(r=corner_r, $fn=50);
pcb = [45.02, 44.8, 1.75];
margin = 0.7;
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);
}
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);
}
\ No newline at end of file
}
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
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment