Atari 50 and Old School Atari Controllers

By Greg Gallardo

Atari 50.

I recently found out about the "Atari 50: The Anniversary Celebration" when I saw Mike Mika's paddle adpater for Xbox controllers on twitter.

I've been meaning to make my own USB controllers with an Arduino Leonardo for a while. Seeing the paddle adapter made me decided to finally try it out. This project uses an Arduino Leonardo and Matthew Heironimus's Arduino Joystick Library. to emulate a joystick with the paddle controller. It's a nice library and easy to use. I'm also using the keyboard and mouse libraries to handle the Atari driving controller and trakball.

 
 

All circuits and sketches can be found on my GitHub project For now the circuits and sketches are pretty basic. I plan on combining all of the circuits and sketches into a single circuit and sketch that can handle all three controllers.

 
 
 
 

CX30 Paddle Controllers

The paddle controller has a single fire button and a 1 MOhm potentiometer with just the wiper and one resistive terminal connected. I'm using the voltage divider described here to estimate the rotation of the paddle knob.

I've noticed some problems with this method. Each paddle has a different estimated maximum value and appear to affect each others readings. I'll plan on improving this.

Another problem is translating the paddle readings into joystick positions. This interferes with menu selections when the paddles are plugged in. I will probably add a switch or button to disable the paddles for menu navigation.

 
 
 
 

CX22 Trackball Controller

This is largely the code found here. The trackball controller should be set to trackball mode. When in trackball mode, the CX22 figure out both the X and Y direction and speed for you. I'm translating the trackball movements into mouse movements and using the button as a 'space-bar' press to match the default fire setup in Atari 50: 5200 " Missile Command

The circuit diagram is probably unnecessary. The joystick pins are connected directly to the Arduino.

JoystickArduino
1D8
2D9
3D10
4D11
6D12
7+5V
8GND

 
 
 
 

CX20 Driving Controller

The driving controller is a rotary encoder. My implementation is based on this

There are some problems with what I'm doing. I'm seeing some skipping and I'm not handling the speed of rotation. I plan on improving this.

Like the trackball circuit, a diagram is probably un-necessary. The joystick pins are connected directly to the Arduino.

JoystickArduino
1D0
2D1
6D12
8GND