It’s a cubic foamcore box about 5 inches tall with a solenoid in the bottom and a long-range Sharp IR sensor on one side. The program sends a shaped pulse to the solenoid coil whenever the sensor detects a rapid decrease in distance. The solenoid has small weights attached to its core and the rapid shift in mass makes the box jump slightly in the opposite direction. The falling side of the pulse is a stepped ramp to make the spring-powered return of the solenoid slower, which keeps the box from moving back in the opposite direction.
This would work with just a spring and weight and a servo to contract it, but a solenoid system is mechanically simpler and allows easier control of the motion of the weight. Three 9 volt batteries in series can’t supply enough current to contract the solenoid, so I attached 14,100 uF worth of capacitors across the supply rails. The time between pulses is enough for them to recharge and deliver the next current pulse. The output is switched with a MOSFET. I didn’t have a logic-level MOSFET on hand, so I stepped up the Arduino output with a bipolar transistor to drive the FET.
It only jumps about 1/8” at the moment. It needs larger weights on the solenoid, and experimentation with roller wheels and unusual surfaces is in order.
Sketch: <a title=”Arduino Sketch: Luke_Form_Motion” href=”http://code.arc.cmu.edu/~cheng/uploads/Luke_Form_Motion.pde” target=”_blank”>Luke_Form_Motion</a>
Schematic (this file also includes schematics for the 3rd and 4th assignments): Luke_Schematics_3,4,6