Fiber Optic Display
First of all let’s give credit to the original post:
https://www.instructables.com/Fiber-Optic-Matrix-Display/
After seeing the fiber optic display project I wanted to make one. Thus, the project started. The aim of this project was to build a screen without any real plan of what to show.
I don’t go deep into the details, since the referred instructable author already made it very well. I focus only on the important points.
Finding a suitable fiber was not too difficult. However there is a huge variety of different diameters and it took some time to decide what would be the best diameter. The fiber defines pixel size and at the same time one has to keep in mind the 3d printer limitations. Thus, I went with the 1.5mm version. In the end it was decision between the costs and size. The 16x16 RGB LED Panel size is fixed and the distance between the LEDs is 10mm. I estimated that I needed 40m of fiber and the price for 50m 1.5mm roll was half than 2mm or something like that.
The small fiber diameter was another topic. It took several trials to find a suitable hole diameter that was not too small nor too large for the fiber. In the end I still had to redrill all the holes for better assembly. The fiber is not perfectly straight and the 3d printed hole is not perfectly smooth. Resulting quite challenging assembly process. I recommend to make first few trials with different hole sizes (Fusion 360 file).
UPDATE: I added the fiber connection Table. Otherwise the code doesn't make any sense.
Needed Files
Here are all the STL Files. The back panel has a slot for Wemos controller. I started from another project, thus the filename WordClock. It was never intended to be published.
All the parts you need only once, except WordClock_E (you need two).
I used M3x10 screws (maybe in same cases M3x6, I recomend checking in the Fusion how deep the hole is). At least I was able to screw them in without any preparations, just force and determination.
After drilling all the fiber holes I noticed that the surface was not looking very good. Thus I made a cover – WordClock_DD --> it’s not necessary for the display.
For better effect print everything (except WordClock_G) in a dark color, like black. The diffusor WordClock_G should be something see-through or white.
I added the Fusion 360 files too. My design process was not really thought through, thus it has lot of iterations and it’s not easy to adjust something. Nevertheless, the fiber hole diameter is defined as a parameter for better flexibility.
The “…BC” is just for the extra cover (WordClock_DD).
Update: Files D and F I printed the side without holes on the bed. It should be a 0.2mm layer and the fiber goes through it, thus the drilling. After numerous failed prints I decided that it's easier to make the holes after the second layer. Failed prints were one thing, since one could see it quite fast if it goes as it should. However, I was mainly annoyed to scratch away the well sticking hole perimeters. Usually few out of 256 were not as they should and that affected the print. Additionally, the problem with the Elephant foot made the hole entry slightly smaller than it should be. I tried to compensate it with the edge chamfer, but that caused more not sticking on the bed issues. That's one reason why I had to redrill the fiber holes. If you have tuned your printer very well, this layer is not needed and you can cut it.
Fiber Connections
I attched two images. The first one shows 16x16 LED Matrix looked from the LED side. The second one is the 32x8 pixel matrix where the fibers from 16x16 Matrix terminates. The number in the Table indicates the LED number. LED 0 is the closest to the Din and would be the first LED in the row. I made with each fiber the shortest connections with some smooth curves. In my configuration both LED0 pixels are in the same corner (upper richt corner on the youtube video).
If you insert the fibers in the same order you can use my mapping tables in the Arduino Filo.
Important Comments
The whole display is 3d printed and that is causing some flexibility in the system. Despite the symmetrical assembly the fiber has slightly bent the display frame. I started fiber assembly from one side and that has the most deformation. It seems that one should do it in one go and not over several days.
Another small issue are the pixels themselves. Unfortunately not all the fibers are at the same height and that affects the brightness of a pixel. Few pixels are a little lower and they are dimmer than others. Therefore, I recommend leaving the fiber hanging out from the holes first and cutting them later. If one fiber is slightly lower than others, it’s impossible to adjust it later.
Software
How to control the LEDs depends very much how you attach the fibers. In my case I made it very symmetrical, but I still made a converting table that says which LED Number corresponds to the small screen pixel. I would recommend using your own logic, as it can be much easier. My aim was to get the screen running without really deep programming.
I attched two INO files. The "FiberPanel.ino" is the code seen on the youtube video. The "FiberPanel3.ino" shows time as can be seen in the next step. The code makes sense only if the fibers are attached the same as indicated abowe.
Conclusion
To sum up, the display works and has very pleasing color play. Some minor mechanical design limitations could be improved if another one would be built. Nevertheless, I am happy with the result. The colorful fibers are mainly visible in the dark, thus the display has the best effect in the darkness.
Hopefully it helps somebody.