Capstone Projects
For the same amount of credit as three labs (!) you may attempt a capstone project that combines together the skills you learned in these labs (or a previous Arduino-focused activity that you did outside of this class) to create something meaningful. There are a few guidelines:
- In order to get three times the points you must create something that is at least three times as complex as one of the labs. This means more code, or more components, or more complexity in some other way.
- Before you are approved to start a capstone project you must write up a small design document that describes what you want to build so that your instructors can verify that it is not too easy or too complex for the scope of this class. Write complete sentences! Draw diagrams! Express yourself! It is not essential that you stick to your design document exactly, but you need to know where you are headed when you get started.
- There is nothing wrong with hooking up components to an Arduino and making them blink and beep without purpose, but it is definitely a little… artificial. What you build for this project should be something. See below for examples of things you could make that have a little bit more something to them than the previous labs did.
Build a game
There were lots of handheld electronic games manufactured and sold in the 1970s and 1980s that were made with the same level of technology as the parts in your Arduino kits, like Mattel Football and Simon. For this project you should build your own game. It probably will not be incredibly fun, but it should be something that someone can play and either win or get better at. Here is an example game:
Four LEDs are hooked up to the Arduino, each with a corresponding button, along with the LCD and buzzer. After a short count-down, the Arduino randomly lights up one of the LEDs; if the player pushes the corresponding button they get a point and another LED lights up, but if they push the wrong button they instantly lose, which is announced by the buzzer. At the end of 10 seconds the game ends (if the player has not already lost), with the player’s score being the number of buttons they managed to correctly push before running out of time. Both the time remaining and the current score are displayed on the LCD at all times.
Games often involve generating random numbers. You can do this with the random()
function.
Build a gadget
Another possibility is to build a “gadget” that solves a real-world problem, even if it is silly, contrived, or already solved. Although a lot of things in this category would depend on specialized hardware that is not in your kit, there are lots of “toy” versions of real-world solutions you could build, like:
- a clock, stopwatch, or kitchen timer (LCD, buttons, switches)
- a configurable metronome (LCD, rotary encoder, piezo buzzer)
- a better servo motor tester (servo motor, LCD, rotary encoder)
Build an automaton
The word automaton generally refers to a machine that operates under its own control, but also specifically refers to a type of mechanical puppet that moves on its own and performs "parlor tricks", like shooting an arrow or writing on paper. There was even a famous one called the Mechanical Turk that played chess… but was only able to do so because it hid a person inside.
This capstone project requires you to build an automaton that looks and acts like something specific. In addition to the parts in your kit, you will need some craft supplies, like colored pencils or markers, cardstock, and tape. Be creative! Some examples include:
- a cartoon head that opens its mouth to sing (servo motor, piezo buzzer)
- a pair of arms that use flag semaphore to spell out a message (both servo motors)
- a video game character who jumps when you push a button (servo motor, buzzer, button)
If you decide to use your second servo motor you will need to create a second Servo
object to control it. Also, take another look at the note about servo motor power usage in Lab 8; you may run into strange glitches (like your Arduino unexpectedly restarting) when using both motors at once.
Build something artistic
If you are feeling exceptionally creative, you could also create an art project using the components in your kit and whatever other supplies you have on hand. Although it is impossible to pin down what is and is not art, the Arduino needs to add some kind of complexity or interactivity so that the programming has substance.
If you decide to go in a musical direction, consider using the Tone library, which makes it possible to play up to three notes at once, each on a separate piezo buzzer. Another trick for constrained musical environments (like old video game consoles) is to use arpeggios and play the notes of a chord in rapid sequence, which only uses a single sound at a time but still kind of sounds like a chord. Although it is a far cry from a proper synthesizer, it could be an interesting project to program a multi-instrument song into an Arduino and have it synchronize lights to the music.