As we put the finishing touches on our Smart Mood Light, we realized that the project we had set out to complete in this class was far from what we had actually accomplished. Having originally planned to program a multi-setting, music playing, wireless, batter-powered mood lamp, we set out from the get-go with a complex series of demands for our final product. What we ended up with met only a few of these criteria, but taught us a great deal about electronics, programming, circuitry, and that one should never underestimate the time, energy, and effort involved in creating even the most basic of electronic designs.
Bashing of the project aside, the lamp was able to do some impressive things and was, in some sense, programmable with multiple settings. It had two main states: one with a blinking blue light, and one with an oscillating series of red, blue, and yellow light, to produce a fluctuating spectrum. The latter was a “party” setting of sorts, and could blink at different speeds depending on the setting of the potentiometer. The AnalogInput program was used to obtain a value from the potentiometer, then the light blinked at a rate corresponding to that Analog reading. Beyond a certain threshold of input, the program switched to three compounded sinusoidal light functions, which oscillated slightly out of phase with each other to create a pretty pattern. We had found the code for that function online, and integrated it into the rest of our Arduno program.
We definitely faced many challenges throughout this process. One that was particularly limiting was money; it’s quite difficult to make meaningful music from an Arduino without a rather expensive shield. Without that shield, the best sound that can be produced is a MIDI file, which though fun for video game themes is hardly seductive (one of the objectives of the lamp). Another issue we ran into was that of integrating all of the programs we sought our Arduino to have into one single code. It was easy to get the blinking and oscillating light programs into two disjoint programs. Connecting them using the potentiometer was very tough. We needed to manipulate the code so as to constantly re-evaluate its own state, and check to break out of its current program when the AnalogInput reading was below a certain threshold. This alone took an entire class to complete.
Ultimately, this class was unquestionably a learning experience. Neither of us knew the first thing about Arduinos coming into this class, but we now have the confidence to understand general programs and circuits. We would now likely be able to build other simple projects without too much difficulty, using many of the parts that come with the Arduino set. Designing a more complicated, full-scale project, we learned, would take much more than just simple understanding of Arduinos. There are many logistical constraints, and it’s easy to get bogged down by the simplest of problems. This realization was perhaps the biggest takeaway from this course.
Matthew Jordan & Chandula Fernando