Combining Side-emitting Optic Fibers and LED Strips

by adkeswani in Circuits > LEDs

120 Views, 4 Favorites, 0 Comments

Combining Side-emitting Optic Fibers and LED Strips

cover.jpg
Side-emitting fiber optic with LED strip

Side-emitting optic fibers/light pipes emit light along their length instead of emitting light at the ends. I wanted to see if it was possible to combine these with LED strips to produce luminous string art (e.g. https://www.pinterest.com/adkeswani/string-art/). That was overambitious, and I lost interest before attempting something that complex, but it may be possible. This Instructable assumes familiarity with Arduino, 3D printing, and LED strips.

Supplies

  1. Programmable LED strip (e.g. https://www.adafruit.com/product/2328)
  2. Depending on your frame, you may want a strip with lower density. With 144 LEDs/m and 4mm thick fibers, I found that I could not make a complicated pattern with overlapping fibers.
  3. If I were to redo this project, I would use the 72 LEDs/m, which would also allow more tolerance when fitting the LED strip to the frame.
  4. You will need to remove the weatherproof sheathing from the strip to get the LED strip to fit inside the frame.
  5. Side-emitting optic fiber whose diameter matches the diameter of the LEDs on your LED strip (e.g. 20 feet of the 0.16" / 4mm diameter of https://www.amazon.com/dp/B08SBRSQYW was enough to produce the result in the photos above)
  6. Diameter of fiber should match diameter of LED, otherwise it may not capture all the light or all the colors. An RGB LED is actually 3 or more LEDs in a single package, so a thinner tube may end up positioned over one color and not another.
  7. Microcontroller that works with the LED strip (e.g. Arduino Uno)
  8. 3D printer for the frame.
  9. Software to model the frame (e.g. I use the free personal/non-commercial version of Fusion)
  10. Hot glue gun
  11. Electrical tape
  12. Power source(s) that can power the LED strip and microcontroller (e.g. https://www.amazon.com/dp/B07N18XN84)

Design and 3D Print a Frame

Screenshot 2025-07-06 130658.png
Screenshot 2025-07-06 130735.png
Screenshot 2025-07-06 131122.png
Screenshot 2025-07-06 132154.png
  1. This step will require some measurement and experimentation. I would recommend modelling this yourself and doing some test prints to experiment with.
  2. A circular or square frame might look good, possibly with a lower density LED strip to avoid overcrowding.
  3. The file attached here can produce the result in the photos above, but it did not fit perfectly; the LED strip required some force to press into the frame and it popped out of the frame in places.
  4. I have only attached the STL because I used the personal/non-commercial version of Fusion.
  5. The holes in this file go all the way out to the ends of the arms, but the result in the photos above does not have lights all the way to the ends. This was mostly because I ran out of fiber, but longer lengths will also not glow as brightly.
  6. Notes:
  7. Initially, I tried to keep the weatherproof sheathing and just have it sit inside a channel in the frame, but I think this would have made it difficult to precisely position the LEDs and optic fibers. Instead, I removed the sheathing and created rectangular holes for the LEDs to fit into.
  8. You can see the rectangular holes in the second image. The LED fits into the deeper, square hole, while second, taller hole gives space for the solder joints around the LED to fit into. Make these holes low tolerance, i.e. introduce as much wiggle room as possible. Otherwise minor variations in the LED strip or while printing may prevent your strip from fitting into these holes.
  9. At the ends of the frame and at the curved corner (3rd image), there is a continuous groove instead of holes, because there are no fibers inserted in these sections, so there is no need for precisely positioned holes.
  10. The flat part of the strip sits flat on the flat part of the frame around the rectangular holes, and electrical tape can be used to hold it down.
  11. In the 4th image, you can see the circular holes that the optic fibers fit into. They are positioned directly over the center of the rectangular holes that the LEDs fit into. I used the Countersink option when making these holes to produce 5mm holes on the inner side of the frame that taper down to 4.5mm holes on the outer side where the LEDs are. This provided some wiggle room for my 4mm fibers, but I think I could have increased the tolerance / made the holes closer to the fiber diameter.
  12. The frame is about 15mm thick in total because this provides space for the LED strip to fit into and allows the holes for the optic fibers to have enough depth to ensure they stay positioned directly over the LEDs.
  13. In Fusion (or whatever modeling software you are using), Rectangular Patterns / Arrays are your friend for creating all the holes in the frame. The Spacing option in Distribution also helps, since you just need to input the center-to-center distance between the LEDs.
  14. I used the Cut functionality in the slicer to cut this frame into 3 pieces: 2 arms and the curved corner. I made the cuts at the corner because otherwise the cuts would have introduced variation in the distances between the holes on the arms and the LED strip may not have fit.

Downloads

Assemble the Frame and Attach the LED Strip and Optic Fibers

20250628_152505 (1).jpg
20250628_152528 (1).jpg
  1. Connect the frame together at the cuts (if any). I put hot glue in the holes and on the flat surface on one side, then inserted the connectors and pressed the pieces together for ~30 seconds.
  2. This is probably a good time to test your LED strip before attaching it to the frame. Use something like the "strandtest" example to test that all the LEDs are working. I did not need to attach the power supply yet because the Arduino Uno I was using could supply enough currently to light up a few LEDs at a time for the test.
  3. Press the LED strip into the rectangular holes and use electrical tape to secure it. I found that inserting about 5 - 10 LEDs at a time and then taping them down worked well.
  4. Insert the fiber optics into the holes until they hit the LEDs. I found that wire cutters worked well at cutting the fibers to length, whereas scissors would squash the fiber more.
  5. Test the LEDs again to ensure the fibers are lighting up as expected.
  6. If necessary/desired, use hot glue to secure the fibers in their holes. Do this on the inner side of the frame, i.e. not on the side where the LED strip is stuck. The hot glue did not cause any damage to the optic fibers as far as I could tell, though I wouldn't press the nozzle against the fiber for too long.
  7. Later of, it was not difficult to pull out the fiber, remove the old glue, then reposition and reglue it.

Wire Up the Power Supply and Code Patterns

  1. Wire up the power supply.
  2. The Arduino Uno I used and the DotStar LED strip both take 5V. However, the Uno would only take 7-12V at its Vin pin. I could have used such a power supply, but then it would be too much to power the LED strip directly. Furthermore, the Uno can only provide 900mA output from its 5V pin (which would only be enough for 15 LEDs at max brightness). Therefore, I went with a 5V power supply connected directly to the LED strip and to the Uno's 5V pin.
  3. Never provide power to the Uno's 5V pin while using its USB connector at the same time. You can read more about this online, but it can backfeed power into your computer's USB port and damage it.
  4. Code up some lighting patterns for the LED strip
  5. Here is an example sketch that works for my LED strip and frame: https://gist.github.com/adkeswani/f36f75009f1e25f77108853f75a0737f
  6. It is useful to have a helper function that lights up a row by setting the color of both LEDs on either end of the row
  7. It is also possible to set the LEDs for a single row to different colors. I have one pattern (RainbowWipe) that uses that, with a "60 degree phase shift" between the pixels lighting the same row.
  8. Print out a case for the microcontroller to make it easier to mount
  9. This is the one from the pictures above: https://www.thingiverse.com/thing:2511299