

The Thumb Joystick (Manufacturer: Seeed Studio, Part ID: 101020028) is a compact, handheld input device designed for precise directional control and movement in electronic systems. It features a two-axis analog stick and a built-in push button, making it ideal for applications requiring intuitive navigation or control. The joystick is commonly used in gaming controllers, robotic systems, menu navigation, and other interactive projects.








The following table outlines the key technical details of the Thumb Joystick:
| Parameter | Specification |
|---|---|
| Manufacturer | Seeed Studio |
| Part ID | 101020028 |
| Operating Voltage | 3.3V to 5V |
| Output Type | Analog (X and Y axes), Digital (Button) |
| X-Axis Output Range | 0V to VCC (centered at ~VCC/2) |
| Y-Axis Output Range | 0V to VCC (centered at ~VCC/2) |
| Button Output | Digital (Active Low) |
| Dimensions | 40mm x 26mm x 32mm |
| Interface | 5-pin header (GND, VCC, VRx, VRy, SW) |
The Thumb Joystick has a 5-pin interface. The table below describes each pin:
| Pin | Name | Description |
|---|---|---|
| 1 | GND | Ground connection |
| 2 | VCC | Power supply (3.3V to 5V) |
| 3 | VRx | Analog output for X-axis movement |
| 4 | VRy | Analog output for Y-axis movement |
| 5 | SW | Digital output for the push button (Active Low) |
To use the Thumb Joystick in a circuit, follow these steps:
VCC pin to a 3.3V or 5V power source and the GND pin to ground.VRx and VRy pins to the analog input pins of your microcontroller (e.g., Arduino).SW pin to a digital input pin of your microcontroller. Use a pull-up resistor if necessary.Below is an example of how to connect the Thumb Joystick to an Arduino UNO:
GND → GND on ArduinoVCC → 5V on ArduinoVRx → A0 on ArduinoVRy → A1 on ArduinoSW → D2 on ArduinoThe following Arduino sketch reads the joystick's X and Y positions and detects button presses:
// Pin definitions
const int VRxPin = A0; // X-axis analog output
const int VRyPin = A1; // Y-axis analog output
const int SWPin = 2; // Push button digital output
void setup() {
// Initialize serial communication for debugging
Serial.begin(9600);
// Configure the button pin as input with internal pull-up resistor
pinMode(SWPin, INPUT_PULLUP);
}
void loop() {
// Read the X and Y axis values (0 to 1023)
int xValue = analogRead(VRxPin);
int yValue = analogRead(VRyPin);
// Read the button state (LOW when pressed)
int buttonState = digitalRead(SWPin);
// Print the joystick values to the Serial Monitor
Serial.print("X: ");
Serial.print(xValue);
Serial.print(" | Y: ");
Serial.print(yValue);
Serial.print(" | Button: ");
Serial.println(buttonState == LOW ? "Pressed" : "Released");
// Add a small delay for stability
delay(100);
}
No Output from the Joystick
VCC and GND pins are properly connected.Button Not Detected
INPUT_PULLUP mode in your code or add an external pull-up resistor.Inconsistent Analog Readings
Joystick Center Position Not Accurate
Q: Can I use the Thumb Joystick with a Raspberry Pi?
A: Yes, the joystick can be used with a Raspberry Pi. Connect the analog outputs (VRx and VRy) to an ADC (Analog-to-Digital Converter) since the Raspberry Pi lacks built-in analog input pins.
Q: What is the lifespan of the joystick?
A: The joystick is designed for long-term use, but its lifespan depends on the operating environment and frequency of use. Handle it gently to maximize durability.
Q: Can I use the joystick for 360-degree control?
A: Yes, the joystick provides full 360-degree analog control, making it suitable for applications like robotic arms or camera gimbals.
Q: Is the push button necessary for operation?
A: No, the push button is optional and can be left unconnected if not required for your application.