// ============================================
// 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();
