{
  "metadata": {
    "id": "adafruit-444-psp1000-joystick",
    "name": "Adafruit PSP1000 2-Axis Analog Thumb Joystick",
    "type": "input_device",
    "description": "Compact PSP1000-style two-axis analog thumb joystick module with X and Y potentiometer outputs.",
    "manufacturer": "Adafruit",
    "part_number": "444",
    "datasheet_url": "https://www.adafruit.com/product/444",
    "tags": [
      "adafruit",
      "444",
      "joystick",
      "psp1000",
      "analog",
      "thumbstick"
    ],
    "schema_version": "1.4.0",
    "version": "1.0",
    "taxonomy": [
      "expansion.breakout"
    ],
    "thumbnail": "https://storage.googleapis.com/protoboard-delta.firebasestorage.app/protoparts/adafruit-444-psp1000-joystick/thumbnail.png"
  },
  "domains": [
    {
      "domain": "electrical",
      "power_domains": [
        {
          "id": "vcc",
          "name": "Joystick Reference",
          "nominal_voltage_V": 3.3,
          "voltage_range_V": [
            0,
            5
          ],
          "max_current_mA": 5,
          "isolation_type": "non_isolated",
          "ground_reference": "common",
          "description": "Potentiometer reference supply."
        }
      ],
      "resources": [
        {
          "id": "vcc",
          "name": "VCC",
          "description": "Potentiometer reference input.",
          "functions": [
            {
              "name": "power_input",
              "direction": "sink",
              "signal_class": "power"
            }
          ],
          "connector_type": "connector_pin",
          "power_domain_id": "vcc"
        },
        {
          "id": "gnd",
          "name": "GND",
          "description": "Ground.",
          "functions": [
            {
              "name": "ground",
              "direction": "sink",
              "signal_class": "ground"
            }
          ],
          "connector_type": "connector_pin",
          "power_domain_id": "vcc"
        },
        {
          "id": "x",
          "name": "X",
          "description": "X-axis analog output.",
          "functions": [
            {
              "name": "analog_output",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "connector_type": "connector_pin",
          "power_domain_id": "vcc"
        },
        {
          "id": "y",
          "name": "Y",
          "description": "Y-axis analog output.",
          "functions": [
            {
              "name": "analog_output",
              "direction": "source",
              "signal_class": "data"
            }
          ],
          "connector_type": "connector_pin",
          "power_domain_id": "vcc"
        }
      ],
      "interfaces": [
        {
          "id": "axis_x_output",
          "name": "X-Axis Analog Output",
          "protocol": {
            "type": "analog",
            "role": "output"
          },
          "requires": [
            {
              "function": "analog_output",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1
          },
          "description": "Wiper voltage of the X-axis potentiometer. Sweeps from approximately GND to VCC, centered near VCC/2 at rest."
        },
        {
          "id": "axis_y_output",
          "name": "Y-Axis Analog Output",
          "protocol": {
            "type": "analog",
            "role": "output"
          },
          "requires": [
            {
              "function": "analog_output",
              "count": 1
            }
          ],
          "constraints": {
            "max_connections": 1
          },
          "description": "Wiper voltage of the Y-axis potentiometer. Same characteristics as the X-axis output."
        },
        {
          "id": "power_in",
          "name": "Joystick Reference Power",
          "protocol": {
            "type": "power",
            "role": "input"
          },
          "requires": [
            {
              "function": "power_input",
              "count": 1
            },
            {
              "function": "ground",
              "count": 1
            }
          ],
          "description": "Reference voltage and ground for the potentiometer dividers. Use the same rail as the consuming MCU ADC reference for ratiometric measurements."
        }
      ],
      "supply_voltage_V": [
        0,
        5
      ],
      "pin_count": 4,
      "metadata": {
        "axes": 2
      }
    },
    {
      "domain": "mechanical",
      "resources": [],
      "interfaces": [],
      "package_type": "See manufacturer product reference",
      "metadata": {
        "mounting_method": "pcb_mount"
      }
    },
    {
      "domain": "thermal",
      "resources": [],
      "interfaces": [],
      "operating_temperature_C": [
        0,
        70
      ],
      "metadata": {
        "requires_thermal_management": false
      }
    }
  ],
  "design_rules": [
    "Power VCC from the same rail that the MCU ADC uses as its reference so supply variation cancels out in ratiometric measurements.",
    "Place a small RC low-pass on each axis output if mechanical noise spikes need to be suppressed.",
    "Implement a software dead-zone around mechanical center; rest position is mechanical, not precision electrical center.",
    "Calibrate X and Y endpoint values per unit when accurate full-range position mapping is required."
  ],
  "usage_notes": "This PSP1000-style thumbstick is a passive pair of potentiometers with no internal controller IC. Connect VCC and GND to a clean reference rail and route the X and Y wiper outputs to ADC inputs or to an analog mux if consolidating channels.",
  "warnings": [
    "Mechanical part with consumer-grade wear characteristics; heavy actuation can require field replacement.",
    "The wiper outputs are not buffered, so long traces and noisy shared ADC routing can degrade readings.",
    "Center voltage drifts with temperature, mechanical tolerance, and aging; software calibration is recommended."
  ]
}