(1) Laser Cutter
(2) Soldering Iron
(3) Wire Strippers
(4) Super Glue
(5) Black Spray Paint
(6) Glue Gun
(7) Heat Gun
(8) Potentiometer (optional)
(9) Safety Glasses/ Goggles
(1) 8 x 11 1/4" Transparent Acrylic
(2) 8 x 11 1/4" Wood Sheet
(3) Arduino Uno
(4) 32x + NeoPixel Strip (Individually Cut)
(5) Breadboard
(6) Solder
(7) 2x 150 Ohm - 250 Ohm Resistor
(8) ~ 20x Male to Male Jumper Wires
(9) 2x Buttons
(10) 3x Different Color Wires
Code (Credit to Drew Griggs for writing the original code): The only changes between the origional code and the final code is that two buttons were defined with to if statements, which adds one hour (ishour() += 1;) to the hour function and five minutes to the minute function (isminute() += 5;). With the changed button code, all I did was change on of the if statements to incrementally change the rgb values of the neopixel strip.
Files (Credit to Mr. Dubick & Youtube @SuperMake Something) for the SVG files: The major changs between the origional and final files include the widened button holes to fit the button washers and the larger frame to mathc the size of the acrylic frame.
General Overview:
1.) Solder the neopixels to the board
2.) Design/ cut acrylic clock face
3.) Design/ cut clock template
4.) Assemble
5.) Write & upload a functioning code
(YouTube @Super Make Something )
Step 1: Cut out at least 32x individual Neopixel strip lights; however, I would cut 35x to be safe. Several times throughout soldering the board, I damaged an end or the light would not work entirely. To fix this, I used an exacto-knife to scrape the light off to replace it. Also, when cutting them, try to leave room to on the ends, so you can solder on the wires easily.
Step 2: Begin attaching the neopixels to the wood with superglue. Next, begin measuring out and stripping the wires for the board and heat up the pad of the neopixel with your soldering iron. Then, add a moderate amount of solder to the each pad and solder on the wire.
Tip: During the process of soldering, I had difficulty with threading the wires through the holes after soldering them. After the soldering the first row, I realized that threading and stripping the wires before soldering them made it easier, it look better, and more efficient.
Step 3: Attach male jumper wires to the first LED. First, cut the ends off of three jumper wires with the opposite ends being male heads and strip their ends with a ire cutter. (Reference picture above) Next, solder each wire form the board to corresponding jumper wire.
Tip: This is optional, but I used shrink wrap, so the connections of the wires would not touch and interfere with each other. To apply the shrink wrap, simply place it over the wire and use a heat gun.
Tip: Every row test to see if the neopixels are soldered correctly. To test the pixels, use an example code in the Arduino IED and edit the number of pixels in the code.
This is the final test of the board; however it took some troubleshooting to have every pixel working. The last row was not functioning, so I used a potentiometer to see if current was being drawn each pad of the first pixel not working. There are several other methods to test this, but the potentiometer is the most efficient.
(Soldering Continued)
Here is a look at the back of the completed board. At first I had a little trouble wiring row to row; however, keeping a uniform color way for each wire helps.
Final Product
Notes/ Future Advice:
The holes between pixel #22 and #23 do not need to be threaded through.
Pixel #31 (Final LED) does not need to be soldered on the end, and the last holes are not used (refer to photo above.)
Do not change the colors of your wires throughout soldering, as it makes it significantly more confusing.
Wear safety glasses while soldering, safety first.
Laser Cutting the Wooden Frame
Front of Clock
Attaching the Buttons
Because the majority of the files were already designed and cut, there was no difficulty or issues assembling the frame together. The process of assembly goes as follows: (1) Place the 2x buttons and 4x screws from the front side of the clock into the wood and acrylic sheets (2) Place the front of the clock face down on a soft surface (so it will not scratch) (3) Add the washers onto the backs of the buttons and screw the buttons on tightly. (4) Take off the protective sheet on the back of the acrylic. (5) Put the laser cut wood board over the back of the acrylic board, and twist on the caps to the four screws. (6) Finally, place super glue on the back of the wood board, align the nonpixel board with it, and press them together until they have completely dried together. I opted to place a piece of white paper over the neopixels to diffuse the light, but after testing this did not prove significantly effective. Other issues I ran into while assembling the clock frame include the neo pixel board not completely lining up with the laser cut board because several of the LEDs were soldered too low or too high. This was not a major problem, but the board did not completely attach to the other, causing some light to leak out.
To the left is a quick rough sketch of how I did the wiring for one of the buttons, as a picture is much simpler than a description. I used two digital pins for the buttons, and had to solder four stripped jumper wires to the ends of the buttons. The only issue I encountered during this step was confusion in if the digital pin should have gone on the positive or negative end of the button.
When uploading my code to may Arduino, I had no issues. I had ensure that the number of pixels and digital pins of my buttons corresponded with my value in the code, but overall it was aa relatively easy process. While did not have the opportunity to do so, I recommend using the same color wires throughout the board. Additionally, if I had a glue gun, I would have glued the wires down after I ensure the code works properly, so they do not come loose later.
Video #1:
The first video was simply to show the effectiveness of the white paper placed over the neopixels, and to get a general feel of how the product appears visually. The paper does an ok job diffusing the light, but it did not achieve quite what I wanted. Despite the black painted acrylic and the sheet, the neopixels are clearly visible and some do not entirely light up their entire word. I noticed when attaching the neopixel board that there were several gaps, which allows light to escape through the sides, so that could potentially be a factor in the poor lighting. Ideally, each letter would its own light for optimal; however unless a different method is used, soldering around 100 neopixels would be relatively time consuming.
Video #2:
The second video simply shows the word clock operating with the time program.
Video #3:
Finally, I slightly adjusted the program, so the pressing buttons would switch through colors rather than change the time. I tried making a second cycle through different brightness levels, as I could not think of any other changes, but it proved ineffective to have the brightness at any values lower than the max brightness. Relating back to the first video explanation, even at max brightness some pixels could not light up their entire word, so I chose to keep one button to change the hour.
Over the course of this project, I have greatly improved my skills and efficiency in soldering, and also learned a little about myself during projects. Although I wish that our class could have had more time to mill our own boards or to design a back to the clock, I thoroughly enjoyed my experience in this project. In addition to improving my soldering skills, I learned more about the importance of time management and communication with classmates/ teachers. While I typically prefer Python or HTML/ CSS, it was enjoyable and a n excellent learning opportunity to explore the syntax of C++ while in this project. Typically when doing a larger assignment, I tend to dread doing it and put it off to do later; however, I found that I looked forward to working on this.
If provided the opportunity to expand on the project or if there were not as many time restraints, I think I could have drastically improved the clock. First, I would have enjoyed milling my own custom board for the clock, so it could be more compact and I would not have had to use a breadboard. Additionally, a back to the clock would have been convenient, as it could act as a stand to the clock and something to conceal the wires from the Arduino. We could have designed a back in Fusion 360 and 3D printed it, hollowed out a small back with the CNC machine in wood, or added several more layers to the back with the laser cutter. Finally, I would have enjoyed seeing more forms of input and output on the clock, such as a buzzer, switch, more buttons, etc. for features, such as a timer or alarm. Despite the barriers of remote learning and restrictions in class time, I am satisfied with the outcome of the project.