# Electronic components: Analog Joystick

New Courses Coming Soon

Join the waiting lists

The analog joystick is one of those electronic components you have certainly used while playing video games:

You can move the joystick around, and you can also click it from top to bottom:

Any action performed will send the appropriate electronic signals to the circuit it’s connected to.

The 5 pins of the joystick are:

• `GND`, the input LOW signal
• `+5V`, the input HIGH signal, can also be 3.3V when using a 3.3V based device
• `VRx`, the analog signal that represents the position of the joystick on the `x` axis
• `VRy`, the analog signal that represents the position of the joystick on the `y` axis
• `SW`, short for switch, is the digital value `LOW` when pressed, otherwise `HIGH`

You connect `VRx` and `VRy` to an analog input pin to get their value.

Analog inputs range from `0` to `1023` since they use a `10` bits resolution.

When watching the joystick with the pins on the left, the `X` axis values assumes values from `0` (full left) to `1023` (full right) and `498` in the middle. The `Y` axis values assumes values from `0` (top) to `1023` (bottom) and `498` in the middle.

Assuming `VRx` is connected to `A0` and `VRy` to `A1`:

``````int x = analogRead(A0);
``````

A simple program that prints the values is this:

``````void setup() {
Serial.begin(9600);
}

void loop() {
Serial.print("X = ");
Serial.print(x);
Serial.print("\tY = ");
Serial.println(y);
delay(100);
}
``````

You can also think of them as voltage values. Assuming a `5V` positive voltage, you can multiply the value you get by `5.0`, and then divide it by `1023` to get a `0` to `5` range:

``````x = analogRead(A0);
You can perform a similar calculation to get the values relative to a `3.3V` `Vcc`.