Consolidating seb/saltylab into saltylab-firmware before deleting the seed repo. - 16 OpenSCAD CAD models → cad/ - Design docs (SALTYLAB.md, PLATFORM.md, AGENTS.md, board-viz.html) → docs/
54 lines
1.7 KiB
OpenSCAD
54 lines
1.7 KiB
OpenSCAD
// ============================================
|
||
// SaltyLab — LED Diffuser Ring
|
||
// Ø120×15mm Clear PETG 30% infill
|
||
// Wraps around frame, holds WS2812B strip
|
||
// Print in clear/natural PETG for diffusion
|
||
// ============================================
|
||
include <dimensions.scad>
|
||
|
||
ring_od = 120;
|
||
ring_id = 110; // Inner diameter (strip sits inside)
|
||
ring_h = 15;
|
||
strip_channel_w = led_strip_w + 1; // Strip channel
|
||
strip_channel_d = 3; // Depth for strip
|
||
|
||
module led_diffuser_ring() {
|
||
difference() {
|
||
// Outer ring
|
||
cylinder(d=ring_od, h=ring_h, $fn=80);
|
||
|
||
// Inner hollow
|
||
translate([0, 0, -1])
|
||
cylinder(d=ring_id, h=ring_h + 2, $fn=80);
|
||
|
||
// LED strip channel (groove on inner wall)
|
||
translate([0, 0, (ring_h - strip_channel_w)/2])
|
||
difference() {
|
||
cylinder(d=ring_id + 2, h=strip_channel_w, $fn=80);
|
||
cylinder(d=ring_id - strip_channel_d*2, h=strip_channel_w, $fn=80);
|
||
}
|
||
|
||
// Wire entry slot
|
||
translate([ring_od/2 - 5, -3, ring_h/2 - 3])
|
||
cube([10, 6, 6]);
|
||
|
||
// 2020 extrusion clearance (center)
|
||
translate([-extrusion_w/2 - 5, -extrusion_w/2 - 5, -1])
|
||
cube([extrusion_w + 10, extrusion_w + 10, ring_h + 2]);
|
||
}
|
||
|
||
// Mounting tabs (clip onto extrusion, 4x)
|
||
for (angle = [0, 90, 180, 270]) {
|
||
rotate([0, 0, angle])
|
||
translate([extrusion_w/2 + 1, -5, 0])
|
||
difference() {
|
||
cube([3, 10, ring_h]);
|
||
translate([-1, 2, ring_h/2])
|
||
rotate([0, 90, 0])
|
||
cylinder(d=m3_clear, h=5, $fn=20);
|
||
}
|
||
}
|
||
}
|
||
|
||
led_diffuser_ring();
|