+// cork for my weep of willow potion bottle
+
+// designed to fit a small submersible led tea light into the cap and
+// illuminate the smoke rising from the smoker. LED sits in
+// led_cork(), and led_cap() is placed over it to diffuse. Printed @
+// 100% infill, slow, and with the largest possible layer heights.
+
+$fa = 1;
+$fs = 1;
+
+led_cork ();
+//led_cap ();
+
+/* actual cork dimensions
+bottom_d = 29.5;
+top_d = 35.25;
+height = 37.77;
+*/
+
+module cork (bottom_d, top_d, height) {
+ hull () {
+ cylinder (d=bottom_d, h=0.1);
+ translate ([0, 0, height]) cylinder (d=top_d, h=0.1);
+ }
+}
+
+
+// logically, should be arguments, but are shared between led_cork and
+// led_cap...
+
+bottom_inner_d = 30;
+top_inner_d = 35.25;
+height = 37.77;
+wall = 1.0;
+
+module led_cork () {
+ difference () {
+ cork (bottom_inner_d + wall*2, top_inner_d + wall*2, height);
+ translate ([0, 0, wall*2]) cork (bottom_inner_d, top_inner_d, height);
+ }
+
+}
+
+// dome of the led, to be cut from cap
+module led_dome (height = 8.5, diameter = 8.8) {
+ cylinder (d=diameter, h=height/2);
+ translate ([0, 0, height/2]) sphere (d=diameter);
+
+}
+
+module led_cap (cap_depth = 12, cap_tolerance = 0.5) {
+ difference () {
+ // doesn't have to be exact, just need to fit in
+ cork (bottom_inner_d, top_inner_d - cap_tolerance, cap_depth);
+ translate ([0, 0, -0.01]) led_dome ();
+ }
+}