From: Jan "Yenya" Kasprzak Date: Thu, 17 Sep 2015 13:53:42 +0000 (+0200) Subject: Speedometer illumination X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=6d376a84ff6b0cb239f8d05f8e65c48972335d0d;p=bike-lights.git Speedometer illumination --- diff --git a/parts/speedometer.scad b/parts/speedometer.scad new file mode 100644 index 0000000..df0801a --- /dev/null +++ b/parts/speedometer.scad @@ -0,0 +1,99 @@ +infty = 200; +eps = 0.05; + +tube_d = 31.8; +tube_d1 = 28; +body_w = 10; +body_h = 30; + +wall = 2; + +led_d = 3 + 0.5; + +zip_w = 3.5; +zip_h = 2.5; + +top_w = 6+2*wall; +top_led_h = body_h-9; + +cable_w = 6; +cable_h = 3; + +module body() { + hull() { + cylinder(r = tube_d/2 + wall, h = body_w); + translate([body_h + tube_d/2, 0, 0]) + scale([0.75, 1, 1]) + cylinder(r = top_w/2, h = body_w); + } +} + +module chamber() { +/* + intersection() { + hull() { + translate([0, -tube_d/2, wall]) + cube([eps, infty, infty]); + translate([tube_d/2+body_h-eps, -top_w/2+wall, wall]) + cube([eps, infty, infty]); + } + translate([tube_d/2 + 2*wall, -tube_d/2, 0]) + cube([body_h-3*wall-5, tube_d+2*wall, body_w+eps]); + } +*/ + difference() { + hull() { + translate([0, 0, wall]) + cylinder(r = tube_d/2, h = body_w); + translate([tube_d/2+body_h-eps, 0, wall]) + scale([0.75, 1, 1]) + cylinder(r = top_w/2-wall, h = body_w); + } + // bottom part + translate([0, -tube_d/2-wall-eps, 0]) + cube([tube_d/2+wall+zip_h/2, tube_d+2*wall, body_w+2*wall]); + // top covered part + translate([top_led_h + tube_d/2, -tube_d/2, body_w-wall]) + cube([infty, tube_d, 2*wall]); + // wall with hole for LED + translate([top_led_h + tube_d/2, 1, wall]) + cube([wall, infty, infty]); + } +} + +module holder() { + difference() { + body(); + // cut off the bottom part + translate([-infty+tube_d/4, -infty/2, -infty/2]) cube(infty); + // main tube + translate([0, 0, -eps]) + cylinder(r1 = tube_d1/2, r2 = tube_d/2, h = body_w + 2*eps); + // zip tie hole + scale([1, 1.05, 1]) + translate([0, 0, body_w/2 - zip_w/2]) + rotate_extrude(convexity = 10) { + translate([tube_d/2 + wall, 0, 0]) + square(size = [zip_h, zip_w]); + } + chamber(); + // front hole + translate([tube_d/2 + wall + zip_h/2, 0, wall]) + cube([top_led_h - wall - zip_h/2, tube_d, body_h]); + // LED hole + translate([tube_d/2+top_led_h+2*wall,1.5*wall, body_w/2-0.5]) + rotate([-15, -65, 0]) + cylinder(r = led_d/2, h = 10); + // cable hole + hull() { + translate([tube_d/2 + wall + zip_h/2, -10, + body_w/2-zip_w/2]) + cube([cable_h, cable_w, eps]); + translate([tube_d/2, -10, -eps]) + cube([cable_h, cable_w, eps]); + } + } +} + +holder(); +