diff --git a/libtest.png b/libtest.png index ce01f39..5eee585 100644 Binary files a/libtest.png and b/libtest.png differ diff --git a/libtest.scad b/libtest.scad index 6a8e550..5689c1e 100644 --- a/libtest.scad +++ b/libtest.scad @@ -157,7 +157,7 @@ cable_grommets_y = 0; translate([x5, cable_grommets_y]) cable_grommets(); -translate([x5, cable_grommets_y + 30]) +translate([x5, cable_grommets_y + 45]) led_bezels(); translate([x5 + 50, cable_grommets_y]) @@ -366,9 +366,12 @@ components_y = toggles_y + 40; translate([x2, leds_y]) leds(); -translate([x2 + 35, leds_y]) +translate([x2 + 55, leds_y]) ldrs(); +translate([x2 + 87, leds_y]) + fuseholders(); + translate([x2 + 8, carriers_y]) carriers(); @@ -378,9 +381,6 @@ translate([x2, magnets_y]) translate([x2 + 20, carriers_y]) led_meters(); -translate([x2 + 70, leds_y]) - fuseholders(); - translate([x2, spades_y]) spades(); diff --git a/printed/led_bezel.scad b/printed/led_bezel.scad index cd859bd..4169724 100644 --- a/printed/led_bezel.scad +++ b/printed/led_bezel.scad @@ -40,32 +40,72 @@ function led_bezel_hole_r(type) = //! Panel hole radius module led_bezel(type) { //! Makes the STL for the bezel led = led_bezel_led(type); stl(str(led[0],"_bezel")) { - rl = led_diameter(led) / 2; - rr = led_rim_dia(led) / 2; wall = led_bezel_wall(type); - poly_tube(or = rr + wall + led_bezel_flange(type), ir = rl, h = led_bezel_flange_t(type)); // Flange - poly_tube(or = rl + wall, ir = rl, h = led_height(led) - rl - led_rim_t(led)); // Tube up to LED flange - poly_tube(or = corrected_radius(rr) + wall, ir = rr, h = led_bezel_height(type)); // Tube beyond the flange + if(is_num(led_diameter(led))) { + rl = led_diameter(led) / 2; + rr = led_rim_dia(led) / 2; + poly_tube(or = rr + wall + led_bezel_flange(type), ir = rl, h = led_bezel_flange_t(type)); // Flange + poly_tube(or = rl + wall, ir = rl, h = led_height(led) - rl - led_rim_t(led)); // Tube up to LED flange + poly_tube(or = corrected_radius(rr) + wall, ir = rr, h = led_bezel_height(type)); // Tube beyond the flange + } + else { + linear_extrude(led_bezel_flange_t(type)) // Flange + difference() { + offset(wall + led_bezel_flange(type)) + square(led_rim_dia(led), true); + + square(led_diameter(led), true); + } + + linear_extrude(led_height(led) - led_rim_t(led)) // Tube up to the LED flange + difference() { + offset(wall) + square(led_diameter(led), true); + + square(led_diameter(led), true); + } + + linear_extrude(led_bezel_height(type)) // Tube beyond the LED flange + difference() { + offset(wall) + square(led_rim_dia(led), true); + + square(led_rim_dia(led), true); + } + } } } module led_bezel_retainer(type) { //! Makes the STL for the retaining ring led = led_bezel_led(type); stl(str(led[0],"_bezel_retainer")) { - ir = led_bezel_r(type); - poly_tube(or = ir + led_bezel_wall(type), ir = ir, h = 4); + wall = led_bezel_wall(type); + if(is_num(led_diameter(led))) { + ir = led_bezel_r(type); + poly_tube(or = ir + wall, ir = ir, h = 4); + } + else + linear_extrude(4) + difference() { + offset(2 * wall) + square(led_rim_dia(led), true); + + offset(wall) + square(led_rim_dia(led), true); + } } } module led_bezel_assembly(type, colour = "red") {//! Led bezel with LED led = led_bezel_led(type); + d = led_diameter(led); assembly(str(led[0], "_", colour, "_bezel")) { translate_z(led_bezel_flange_t(type)) { vflip() stl_colour(pp1_colour) led_bezel(type); - translate_z(-led_height(led) + led_diameter(led) / 2) + translate_z(-led_height(led) + (is_num(d) ? d / 2 : 0)) explode(-20) led(led, colour); } diff --git a/readme.md b/readme.md index 248499a..1185304 100644 --- a/readme.md +++ b/readme.md @@ -2112,6 +2112,7 @@ Standard domed through hole LEDs. Can specify colour and lead length. | 1 | `led(LED3mm, "green")` | LED 3 mm green | | 1 | `led(LED5mm, "blue")` | LED 5 mm blue | | 1 | `led(LED8mm)` | LED 8 mm red | +| 1 | `led(LED5x2mm, "green")` | LED [5, 2] mm green | Top @@ -6432,6 +6433,7 @@ Printed LED bezels for panel mounting | 1 | `led(LED3mm, "yellow")` | LED 3 mm yellow | | 1 | `led(LED5mm, "blue")` | LED 5 mm blue | | 1 | `led(LED8mm)` | LED 8 mm red | +| 1 | `led(LED5x2mm, "yellow")` | LED [5, 2] mm yellow | ### Printed | Qty | Filename | @@ -6442,6 +6444,8 @@ Printed LED bezels for panel mounting | 1 | LED3mm_bezel_retainer.stl | | 1 | LED5mm_bezel.stl | | 1 | LED5mm_bezel_retainer.stl | +| 1 | LED5x2mm_bezel.stl | +| 1 | LED5x2mm_bezel_retainer.stl | | 1 | LED8mm_bezel.stl | | 1 | LED8mm_bezel_retainer.stl | @@ -6451,6 +6455,7 @@ Printed LED bezels for panel mounting | 1 | LED10mm_orange_bezel_assembly | | 1 | LED3mm_yellow_bezel_assembly | | 1 | LED5mm_blue_bezel_assembly | +| 1 | LED5x2mm_yellow_bezel_assembly | | 1 | LED8mm_red_bezel_assembly | diff --git a/tests/LED_bezel.scad b/tests/LED_bezel.scad index 083d337..94b4ddf 100644 --- a/tests/LED_bezel.scad +++ b/tests/LED_bezel.scad @@ -23,7 +23,7 @@ include <../vitamins/leds.scad> use <../printed/led_bezel.scad> module led_bezels() - layout([for(l = LEDs) led_diameter(l)], 6) let(l = LEDs[$i], b = led_bezel(l)) + layout([for(l = LEDs) max(led_diameter(l))], 6) let(l = LEDs[$i], b = led_bezel(l)) if($preview) led_bezel_fastened_assembly(b, 3, ["yellow", "blue", "red", "orange"][$i % 4]); else { diff --git a/tests/LEDs.scad b/tests/LEDs.scad index 9dda4b8..57f4c41 100644 --- a/tests/LEDs.scad +++ b/tests/LEDs.scad @@ -22,7 +22,7 @@ use <../utils/layout.scad> include <../vitamins/leds.scad> module leds() - layout([for(l = LEDs) led_diameter(l)], 5) + layout(echoit([for(l = LEDs) max(led_diameter(l))]), 5) led(LEDs[$i], ["green", "blue", "red", "orange"][$i % 4]); if($preview) diff --git a/tests/png/led_bezel.png b/tests/png/led_bezel.png index f801e36..882f150 100644 Binary files a/tests/png/led_bezel.png and b/tests/png/led_bezel.png differ diff --git a/tests/png/leds.png b/tests/png/leds.png index 3647e49..9e247af 100644 Binary files a/tests/png/leds.png and b/tests/png/leds.png differ diff --git a/vitamins/led.scad b/vitamins/led.scad index 9a2ed43..77d8477 100644 --- a/vitamins/led.scad +++ b/vitamins/led.scad @@ -41,16 +41,21 @@ module led(type, colour = "red", lead = 5, right_angle = 0) { //! Draw specified rotate([right_angle ? 90 : 0, 0, 0]) translate_z(right_angle ? right_angle - led_rim_t(type) : 0) color(colour) { - rotate_extrude() - rounded_corner(r = d / 2, h = led_height(type), r2 = d / 2); + if (is_num(d)) { + rotate_extrude() + rounded_corner(r = d / 2, h = led_height(type), r2 = d / 2); - linear_extrude(led_rim_t(type)) - difference() { - circle(d = led_rim_dia(type)); + linear_extrude(led_rim_t(type)) + difference() { + circle(d = led_rim_dia(type)); - translate([d / 2 + eps, -5]) - square(10); - } + translate([d / 2 + eps, -5]) + square(10); + } + } else { + translate_z(led_height(type)/2) cube([d.x, d.y, led_height(type)], center = true); + translate_z(led_rim_t(type)/2) cube([led_rim_dia(type).x, led_rim_dia(type).y, led_rim_t(type)], center = true); + } } t = led_lead_t(type); len = lead - (right_angle ? t : 0); diff --git a/vitamins/leds.scad b/vitamins/leds.scad index 34527cf..7a3c805 100644 --- a/vitamins/leds.scad +++ b/vitamins/leds.scad @@ -18,18 +18,20 @@ // // -// d r r h p l -// i i i e i e -// a m m i t a -// g c d -// d t h h -// t t +// d r r h p l +// i i i e i e +// a m m i t a +// g c d +// d t h h +// t t // -LED3mm = ["LED3mm", 3, 3.15, 1.15, 4.6, 2.54, 0.4]; -LED5mm = ["LED5mm", 5, 5.9, 1.1, 9.0, 2.54, 0.4]; -LED8mm = ["LED8mm", 8, 9.2, 1.95,11.0, 2.54, 0.4]; -LED10mm = ["LED10mm", 10, 11.0, 2.0, 13.5, 2.54, 0.4]; +LED3mm = ["LED3mm", 3, 3.15, 1.15, 4.6, 2.54, 0.4]; +LED5mm = ["LED5mm", 5, 5.9, 1.1, 9.0, 2.54, 0.4]; +LED8mm = ["LED8mm", 8, 9.2, 1.95, 11.0, 2.54, 0.4]; +LED10mm = ["LED10mm", 10, 11.0, 2.0, 13.5, 2.54, 0.4]; -LEDs = [LED3mm, LED5mm, LED8mm, LED10mm]; +LED5x2mm = ["LED5x2mm", [5,2], [5,2.7], 0.7, 7.0, 2.54, 0.5]; + +LEDs = [LED3mm, LED5mm, LED8mm, LED10mm, LED5x2mm]; use