The purpose of this lab was to familiarize ourselves with programming Arduino electronics as well as to get comfortable with transitioning from using breadboards to soldered breakout boards. In that end I have succeeded as I am now more comfortable with physical computing than I thought I would be this early into the semester. Whilst I did perform the relatively simple tasks laid out in the Lab rubric for this assignment, I also went beyond to see if I could apply my recently acquired knowledge in a more complex circuit. Besides just having two separate boards with digital input and output connections, I wanted to make a circuit with two inputs that directly affected the colors of the NeoPixel LEDs we were given in Lab. Below I will document the creation of three circuits, showing how my experience expanded over the course of the Lab.
Circuit #1
To start, I created an integrated circuit on a breadboard which had a switch control two LEDs in series. All of this was to be placed on the same perforated board once I had correctly wired the components as a test. There was to be no command inputs from any Arduino code, the switch itself would control the current to the LEDs. This meant that no connection to the board went to any Pins on the Arduino; the only connections were Power and Ground. After testing this setup on the breadboard, I moved the components to a perforated board, to test my soldering skills for the first time in this class.
I learned a lot about the technique of soldering whilst making this circuit, and it deeply informed how I created the later circuits in this Lab. Above you can see the work itself, which I find to be a mixed bag. Some of the solders were up to a high quality, but I found others were particularly shoddy, such as the ground connection from the switch. As well, I didn't trim the bottom of the board too much, so from the bottom the circuit doesn't look very high quality. Below you can see the final soldered circuit in action:
Circuit #2
At our last in-class lab, we were given a NeoPixel, a strip of 4 LEDS connected to each other with power, input, and ground connections coming out of it. We soldered wires to it and quickly established a breadboard testbed to play around with sending digital input signals to these lights. With the new input option available, we also moved to Arduino programming to take full advantage of the new capabilities. This involved integrating a Switch onto our breadboards to send a signal to the LEDs. Most of our in-class time was spent within the Arduino IDE checking out the NeoPixel and how to set it up correctly within our programs. Eventually I replaced the Switch with a push-button we were given, and it took a while for me to understand how to integrate that with the NeoPixel. Below you can see both the breadboarded circuit with the switch and a video of the Neopixel in action due to the pressing of the push-button.
Circuit #3
The final circuit I made leveraged all of the knowledge from the previous two into a more complex setting. Instead of one input, there would be two, that would directly control the output colors on the NeoPixel. Before I could jump directly to the final product I had to make prototypes to demonstrate to myself that my idea was feasible. I started by wiring a push-button input to my arduino, and wrote a short program to test that the input signal was actually reaching the Arduino. Then I wired up a small LED on the breadboard to test that the input from the button would send a signal to the LED. Below you can see both the circuit and a video of the testing in action.
After I demonstrated that the circuit was all well and good, I began to solder the buttons to a perforated circuit board. To get the two inputs, I duplicated the button layout and set them side-by-side, with a wire heading out of each to two separate Arduino Pins. I noticed that my soldering skill had visibly improved since the beginning of the Lab, and I was proud of both the quality of the wiring and the speediness of my technique. After attaching the signal wires to the Arduino and soldering power and ground wires to the board, I wrote a short program to test that the Arduino was receiving both inputs. Sure enough, the light on the microcontroller lit up for both buttons, and on the first time too!
Next I soldered the three wires leading to the NeoPixel to the board. One went to power, the other ground, and the third in the middle of the board, in a place where I could easily solder input wires to connect. However, I didn't know that one connection was needed to the Arduino; in my naiveté I thought that two wires would be needed for each input signal. In hindsight this was a silly mistake to make, but it was nonetheless a learning opportunity that didn't jeopardize the efficacy of my circuit.
I connected the two wires to the Arduino, and co-opted the NeoPixel code we wrote in lab to work for two button inputs. I wanted each button to control the color of the LEDs, and decided upon blue and purple as the colors to correspond to each button. I attempted to include more complicated commands into my program, such as having the light sequence speed up when both buttons are pressed, but this proved to be beyond my skill level. I believe it is still possible with the circuit I have created, so I want to keep experimenting with this to improve my programming ability.
The Program, for your viewing pleasure: