Bidirectional motor control
One of the simplest ways to get a motor to turn in both directions is by using a double-pole, double-throw (DPDT) relay. Along with the relay, this hookup requires two transistors and two Stamp pins, one for on/off control and the other for direction control.
The diagram below contains the schematic for this setup. The DPDT relay is switching the direction of current flow through the motor to get it to turn in either direction. The direction control transistor can be a 2N3904 because most relays require much less than 100 mA through the coil to trip the contacts. A TIP120 can also be used for the direction control. A TIP120 is required for on/off control because it must be able to handle the motor currents. For very high current motors, replace the TIP120 on/off control with a low on-resistance FET or with a SPST relay. In the diagram, the location of the relay pins matches a top view of the DPDT relay sold in the Robot Store (Jameco 174378) and the Radio Shack 275-249A relay.
The next diagram illustrates how to lay this circuit out. The pinouts shown are correct for the Jameco 174377 and Radio Shack 275-249A relays.
Here is an example Arduino program that runs the motor for two seconds in one direction and then two seconds in the other direction.
The 10 ms pauses are to minimize noise spikes caused by turning off the motor and the relay at exactly the same time.
For more detail: Bidirectional motor control