- Dec 5, 2018
- 4 min read
Final Process 04- Fabrication and code
The fabrication and coding process first started with getting the neoPixel strips and matrix to test out some example codes:
After seeing different neoPixel libraries and what leds can do, I was super pumped to start actually building this project (until everything goes down... :/ ... ) I am a big fan of planning and organizing a project step by step so that I started 3d modeling exactly what I want my final project to be with all the dimension of each material and fasteners.
From there I started ordering all the screws, standoffs, wood sheets, acrylic sheets with exact sizes. I got so so excited after and ended up going further with the 3d modeling and render some images and even a video....
The video shows the idea of presentation and the fabrication.
After getting all my materials, I started with laser-cutting the base pieces I want to sit in the box with light strips attached. I tested on chipboard first to just see if the size matches and it did. From there I moved on and cut all the wood base pieces with screw holes on four corners. After doing so, I cut and attached all the led strips on to the wood base panels the way I digitally modeled them.
After cutting all the light strips and attached them, I started putt on all the stand off and they all fit perfectly in there, nice. Then I started drilling holes for the arduino and power supply to sit and that is when shit went down :(. The box was so not stiff that it cracked but hopefully not that obvious. With the disappointment, I continued the process with 8 hours of drilling the inter connection between each box and the soldering.
The solder was an absolute disaster...Soldering them was hard enough, but putting them through those drilled holes to connect with each other with an offset order was next level. I can't count how many times I pulled too hard so the wire came off and ripped the light strips, and how much time it took me to actually sorting out which wire is for which light in an order.
After soldering and before connecting them to arduino, I spent some time to test the current of the entire matrix and fixed some msitake I did during soldering. It eventually lit....
Then I started putting on the acrylic pieces and testing the lighting quality. I guess it looked cool.
After having a matrix of 59* 8 I started connecting them with arduino to just test individual leds and see how the neopixels works in terms of mapping. From there, I started doing the serial communication code and that is where literally everything just went straight down.
I first figured out how to generate all the arrays of the brightness into a [x][y] map, and did the serial communication which turned out to be almost impossible to map onto the leds.. Then I started trying out one dimensional arrays and that I could map them with all the lights. I thought it was pretty straight forward, using serial communication bringing an array as the outByte and then sue a led array in arduino to pick up all the arrays onto the color. BUT NO! I could not figure out why nothing was working so I thought would it be because there are so many values changing so fast that arduino could not pick it up? I increased the baud speed and it still does not work. From there, I realized that I needed help and went for peers and professors. Tim was checking out my code and surprised that it did not work and then he was telling me the reason might be that the communication is too fast and the information is overloading the buffer (which I had no idea what that meant.). From there I tried to test on a smaller matrix 16*16 and nothing was showing still... After talking to david, he suggested some ways of alternating the orders and trying to make the communication faster. Something showed up on the 16*16 matrix with a weird delayed time, but at least something was showing.. From there I just kept on tweaking the codes on both sides and nothing worked..
From there, it was two days straight of believing that my logic and code was right and still trying to find a way to make the communication faster or I guess debug it. After a very long journey of debugging, I decided to go back and start again with just sending one byte of brightness value to the arduino and that worked but still kind of jumpy.
Then I went back again to sending arrays to arduino, nothing happens still. Then I tried to debug the arduino with every single for loop and if statement. That did not really do any help tho..
Until the very last iterations of both p5 code and arduino, the light matrix finally had something lit and was showing some kind of a live steaming. The time was so off that I could not figure out anything it is showing tho. At this point, I just really believe that I might need to move on from p5 and start to try different led drivers like fadecandy or with processing, or madmapper or other stuff that can handle this multiple array live serial communication I am trying to create.
To be continued and wish myself good luck : )