...yet another way to play with your computer and pretend that exercise will be involved...

This page explains how to cheaply connect a Dance Dance Revolution pad to an RC car via your PC, for literally minutes of racing enjoyment. Even more fun than the "race tracks" we played with in elementary school, where all you actually did was hold down a button and wait for your car to fall off the track.

The general approach taken here is to use the parallel port to flip the switches in the RC controller, thereby avoiding all the radio stuff. A few transistors are required to help the 3.3V parallel port pull down some pins on the 9V RC car controller.

Source code is included below... it actually just uses DirectInput to talk to the pad, so if you're burning to drive an RC car around with your PC joystick or keyboard, that works too. If you're using this approach, the software also tries to pulse the pins on the parallel port to give you some crude analog speed control.

What you'll need :

A Dance Dance Revolution pad. I recommend buying one of the soft PlayStation pads, which run about $20, and nailing it down to a big piece of plywood, as is illustrated in the image to the left. The soft pads tend to slide around and/or rip apart without support, and the hard pads are expensive.
A cheap-ass RC car... the kind that actually has no analog steering, just four switches for forward, back, left, and right. This includes just about any car you get for $20 or less. I went with the fabulous Nikko Octane.
A few electronic components, namely:

  • A DB-25-M connector
  • Four resistors, about 500ohms
  • Four NPN transistors
  • Wire+solder

    Total cost ~$6 at Radio Shack. I also used a breadboard to make nicer pictures, although this project is probably appropriate for the solder-in-the-air-and-cover-it-in-duct-tape-or-glue approach.

  • Connecting the hardware :

    First you'll need to open up the controller and take a look at the switches. The buttons shown here each have four terminals on them, but you only need to make one connection to each button. If you're using a different car than I am, you'll need to put a voltmeter on the terminals to find out which ones you care about. What you want is a terminal that is normally sitting at 9V relative to the battery ground, but goes to 0V when you press the button. For this particular controller, there were two terminals on each button that fit this description, and I picked one arbitrarily on each button. If you're looking at the controller as shown in the image to the left, I chose :

  • The upper-right terminal on the "forward" button
  • The lower-right terminal on the "reverse" button
  • The lower-left terminal on the "left" button
  • The upper-right terminal on the "right" button

    Solder about 8 inches of wire to each of these terminals, and about 8" of wire to the battery ground.

  • Now we connect all the components, according to the schematic show on the left. The important points are :

  • Battery ground on the controller needs to get connected to ground on the parallel port
  • The emitter from each transistor goes to the common ground
  • The collector on each transistor goes to one of the terminals in the car controller
  • The base on each transistor goes through a resistor to one of the parallel port data pins

    The software expects the reverse, right, left, and forward switches to be on the parallel port's data 1, 2, 3, and 4 pins, respectively. Data 0 got left out because it was mean to the other children on the playground.

    If you left enough wire between the components and the DB-25 connector, you can plug the whole mess right into the parallel port. I like to use an extension cable so I'm less likely to knock things out of my breadboard in the heat of my excitement about driving an RC car with my feet.

  • You'll also need to connect your DDR pad to your PC somehow and get it recognized as a game controller, assuming you actually want to use the DDR pad (you can skip it entirely and just share in the joy of driving a $15 car around with your $1500 computer) (it's sort of like when you use a 3GHz machine to run a GameBoy emulator).

    One easy way to do this is to use on of many PlayStation->USB adapters available (eBay has lots of them), e.g. the Kiki Joy, which goes for about $10.

    Another way is to connect your pad to another parallel port. The PSXPad driver will find a Playstation (or SNES, GameCube, etc.) controller on the parallel port and make it look like a windows game controller. The driver comes with directions about how to hook your pad up to your parallel port. This is what I did, as illustrated in the image on the left. Since the car will be using one parallel port, this requires that you have two. Extra parallel ports are a good time for hobbyists, and extra parallel ports - via USB or PCI - are under $10 (also a good eBay item).

    Software :

    This zipfile includes :

  • The Fitness Racer software as a Visual C++ 6.0 project and a compiled binary
  • The PSXPad driver, for talking to a game controller that's hooked up to the parallel port
  • The PortTalk driver, for talking directly to the parallel port

    To run the software, you'll also need DirectX 8.0 or higher installed.

  • Hours of enjoyment :

    You are encouraged to have hours of fun with your new toy. Please let the author know if you experience even a small number of hours of fun.

    This page was Slashdotted on 10/21/03.