Final Blog Post
My assembly is finally complete. While it may seem like a huge jump from the previous step, there is actually not much in terms of general assembly. I have assembled a frame from 2″x4″ ‘white wood’ beams and a piece of wood board. Attached to this wood board is a perforation panel containing an LED indicator panel and the MIDI interface from the last video. Previously, where the wiring was conducted with jumper wire and simply plugging into the board, the parts are connected with wires soldered into a prototype shield, which is plugged into the Arduino Mega.
The laser-mounting was the most difficult part, with multiple roadblocks. First, the lasers were too large for the holes, then too small, so 2 versions of 3-d printed mounts were produced. Then, the mounts were too large, so the holes had to be sanded down. Finally, everything was still very loose, so all parts were epoxied/superglued in place.
For a future builder of this project, I advise you that the instructions for MIDI that work using Hex to define commands i.e. 0xE vs 14. Using decimal does not work. Also, photodiodes don’t always land on the same values in the same light conditions; static plays a role. Touching any exposed photodiode parts will change the received signals.
Also, the CAD instructions below imply that screws should be driven into the round support block from both sides. This is true; however, the round block should actually be a much larger piece of wood, such as a 1′ long 2×4 because wood cracks when too many screws are inserted into a small piece of wood. When 3d printing parts, make sure that dimensions are slightly smaller than they need to be, as it is much easier to add a dab of glue than to sand a component down to a good size.
For this milestone, I have taken the previous area and expanded upon it. At this step, the Arduino can now respond to light input by producing a MIDI signal that can be read by the synthesizer.
The primary challenge in this step was coaxing the Arduino to produce the correct sound. This process is detailed in the lab notes, but the essentials are that the Arduino initially produced signals in decimal input when hexadecimal signals are required to produce the correct output and that the unconnected photodiodes that are still included in the program produce an output which is high enough to be interpreted as “on.”
At this stage, the notes can only be played at a fairly slow pace as I have implemented a delay for each of the notes to allow for sustained notes to be played. Without the delay, the program plays notes as quickly as the program loops, producing a sound that seemed to be constantly plucked.
The next steps are to program the device to function without producing this “plucked” sound at any speed. The key to this will be implementing a new variable for the state of any note and programming the Arduino to refrain from playing a note again if it is currently on. Finally, the entire assembly needs to be completely soldered and assembled onto a frame.
Milestone 1: Functioning LED Interface
I have recently completed construction of the first stage of building and programming of my laser harp. At this stage, I have programmed the system to respond to laser light that is shined upon the photodiodes. The construction currently has six photodiodes, and upon illumination by a laser light, one of the 6 corresponding light-emitting diode switches on.
This is a major progression as now I have completed the general mechanism which will form the backbone of the final product: detecting a change in light and producing an output. In the final version of the program, the LED functionality will still be preserved as a troubleshooting measure; however, the primary purpose of the device will be to output a MIDI signal.
The next step in the design process is to program the device to produce a sound when photodiodes are illuminated by light rather than simply illuminate LEDs. From what research has been done using the computer the next process should be fairly straightforwards, if the MIDI output port functions appropriately.
Starter Project: Miniature POV Display
This starter project was seemingly very easy to complete, as all of the instructions were easily found online and all the steps were available. However, beyond the basic soldering process, parts of this project were tedious and difficult to maneuver as a result of my requirement of using a Linux distro rather than a more mainstream OS.
As previously stated, the soldering was very straightforward: I easily attached the modules to the locations pre-printed on the circuit board. When the battery connectors broke off later in the design process, I easily attached them again. The difficulty of the program rested within configuring the computer to operate with the POV display.
To use the code indicated in the instructions, I was required to install AVR tools on my computer. This process took a long time and required me to learn basic syntax for use in the Linux command line, including apt-get [package]. However this process was ultimately unsuccessful as there were several errors that appeared near the end of the process, and I took a shortcut by simply installing the Arduino software, which included all of the required AVR components.
After successfully installing the software, another problem appeared with the source code provided by the website. To fix this I attempted a variety of fixes before arriving at a proper solution found on the internet that required the addition of an additional line of code. This allowed me to program a custom message onto the display.
As it was still exceedingly difficult to actually see the display due to the nature of human eyes, I mounted the assembly onto a desktop fan, with the battery in the center to balance the effects of momentum on the spinning fan. Using the lowest speed of the fan, it was very simple to see the text.