The controller is made up of a cardboard support, 3 "plates" of aluminum foil, shielded wire, resistors, an arduino, and a computer with a charger and the proper software.
By putting your fist in the space between the plates, you are creating a capacitor between your fist and the plates, with the plates at some voltage and your body at ground (don't worry - this is safe!)
By changing the distance between your fist and the plates, you are changing the capacitance. The Arduino can measure this by grounding the plates, then letting them recharge from a constant 5V source, and measuring how long it takes to recharge to a certain threshold. This time is determined by the RC constant (equivalent resistance of the circuit times the capacitance), and since the resistance is constant, it's a measure of the capacitance.
The Arduino can measure the changes in this recharging time relative to an initial calibration, and through the Processing code, it figures out the location of your hand.
A quick overview of the steps:
1. Build the cardboard support structure pictured with 3 (non-touching) pieces of aluminum foil
2. Construct the circuit that we will discuss later using shielded wire, alligator clip heads, and resistors.
3. Plug the circuit into the Arduino (download Processing 1.5 if you don't already have it) and run the code found here: https://github.com/Make-Magazine/3DInterface
4. Run the Processing sketch and make sure that the capacitor can sense the location of your hand as shown in the videos from the guides we linked above
5. Modify the code in the Processing sketch so that it sends information about the location of your hand to the Arduino through the serial port
6. Modify the Arduino code to use that information to drive a device of your choice! You'll need to take apart the device and wire some inputs from the Arduino into its circuitry. We chose to drive the throttle of a remote controlled helicopter, varying rotor speeds (and thus the height that the helicopter flies at) depending on the position of your hand.
This project could still use some improvements and fun add ons! Because of this, we'll try to describe some of the major problems we encountered during the making of the project, how we debugged them, and managed to fix them (or not.)