If your analogRead() values are jittering wildly, stuck at 1023, or jumping in non-linear steps, the problem is rarely the Arduino itself. In 90% of cases, the fault lies in high-resistance wiper contacts, reversed power pins, or a source impedance that exceeds the microcontroller's ADC sampling limits. Before you rewrite your code or add software smoothing filters, grab your multimeter. Hardware faults must be diagnosed at the breadboard.
This guide provides a strict, measurement-forward workflow to verify your potentiometer Arduino wiring, isolate the exact point of failure, and select the correct replacement component.
The 3-Minute Meter Setup for 5V Logic Testing
Testing low-voltage embedded circuits requires a different meter configuration than testing household AC wiring. Set up your digital multimeter (DMM) exactly as follows before touching the breadboard:
- Dial Position: DC Volts (V⎓) for live circuit testing; Ohms (Ω) for unpowered continuity/resistance checks.
- Lead Jacks: Black lead in COM, Red lead in V/Ω/mA. Never leave the red lead in the 10A high-current jack, as the internal shunt will introduce a near-short across your logic pins.
- Range: Auto-ranging, or manually set to the 20V DC range for maximum resolution on a 5V rail.
Probe Placement & Expected Readings for Potentiometer Arduino Wiring
A standard 3-pin rotary potentiometer acts as a variable voltage divider. Pin 1 connects to VCC (5V), Pin 3 to GND, and Pin 2 (the middle wiper) to the analog input (e.g., A0). To verify the circuit, power the Arduino via USB and perform these three specific measurements.
- Supply Verification: Place the black probe on the breadboard GND rail and the red probe on the VCC rail feeding the pot. This confirms the Arduino's 5V regulator isn't sagging under load.
- Total Track Resistance: Power down the board. Place probes on Pin 1 and Pin 3. This measures the total resistive element (e.g., 10kΩ).
- Wiper Sweep Test: Power the board back up. Keep the black probe on GND. Place the red probe on the middle wiper pin (Pin 2). Slowly rotate the shaft 360 degrees while watching the display.
| Test Point | Meter Mode | Good Value | Bad Value & Meaning |
|---|---|---|---|
| VCC to GND (Supply) | DC Volts | 4.80V – 5.10V | < 4.50V (USB port sag or excessive breadboard bus resistance) |
| Pin 1 to Pin 3 (Track) | Ohms (Ω) | ~10.0 kΩ (±10%) | OL / Infinite (Blown carbon track or cracked solder joint) |
| Wiper to GND (Sweep) | DC Volts | 0.00V to 5.00V (smooth transition) | Voltage jumps, drops to 0V mid-sweep, or stays stuck at 2.5V |
Decision Tree: Diagnosing Jitter, Dead Zones, and Stuck Values
Use this decision path to translate your multimeter readings into a concrete hardware fix. Follow the symptom down to the required action.
| Observed Symptom | Multimeter Reading | Root Cause | Required Action |
|---|---|---|---|
| ADC reads stuck at 1023 | Wiper reads 5.00V regardless of shaft position. | Wiper pin is shorted to VCC, or VCC/GND pins are swapped and wiper is at max travel. | Check breadboard traces for solder bridges; verify pin 1 and 3 orientation. |
| ADC reads stuck at 0 | Wiper reads 0.00V regardless of shaft position. | Wiper shorted to GND, or floating ground connection on Pin 3. | Reseat GND wire; verify continuity from Pin 3 to the Arduino GND pin. |
| Wild jitter (±50 counts) at mid-scale | Wiper voltage fluctuates > 50mV while holding shaft perfectly still. | Dirty wiper contact or source impedance exceeding ADC sample-and-hold limits. | Clean with contact cleaner, or replace with a low-impedance 10kΩ Bourns pot. |
| Non-linear 'dead zones' at ends | Voltage stops changing between 0-0.2V and 4.8-5.0V. | Using an Audio (Logarithmic/A-taper) pot instead of a Linear (B-taper) pot. | Replace with a B-taper (Linear) potentiometer for even voltage division. |
| Readings drift over time | Voltage slowly creeps up or down without touching the shaft. | Thermal drift in a cheap carbon-composition pot or breadboard contact oxidation. | Upgrade to a cermet or conductive plastic element pot. |
Common Wiring Mistakes That Give Misleading Readings
Even if your multimeter shows perfect continuity, certain component choices will cause the Arduino's internal circuitry to generate misleading data. The most common trap is ignoring the microcontroller's ADC input impedance requirements.
The High-Impedance Potentiometer Trap
According to the Microchip ATmega328P datasheet, the analog-to-digital converter uses an internal sample-and-hold capacitor (approximately 14pF). When the ADC multiplexer switches to your pin, this capacitor must charge to the input voltage within 1.5 ADC clock cycles.
If you use a 100kΩ or 1MΩ potentiometer to save power, the RC time constant is too high. The internal capacitor fails to charge fully before the conversion completes. The result? Your analogRead() returns values that are lower than actual, or subsequent reads 'bleed over' from previously sampled pins. The official Arduino analog pins documentation explicitly recommends keeping the source impedance at 10kΩ or less for accurate 10-bit sampling.
Swapped VCC and GND Pins
A potentiometer is passive; it will not burn out if you swap the 5V and GND connections. However, this reverses the voltage sweep direction. Turning the knob clockwise will drive the ADC reading from 1023 down to 0 instead of 0 up to 1023. While easily fixed in software by subtracting the reading from 1023, it causes confusing behavior if you are debugging hardware while watching the serial monitor.
delay() to slow down the loop. Instead, read the pin 8 times in rapid succession and bit-shift right by 3 to average the values. This acts as a hardware-level low-pass filter without blocking your main loop.
The Default Fix: Upgrading to a Bourns 10kΩ Linear Pot
If your decision tree diagnosis points to a worn carbon track, high wiper resistance, or incorrect impedance, stop trying to salvage cheap, no-name potentiometers harvested from old radios or bought in bulk assortments. The physical tolerances on cheap carbon tracks guarantee wiper bounce and dead zones.
For reliable potentiometer Arduino wiring, terminate your troubleshooting by standardizing on the Bourns PTV09A-4020F-B103 (or any equivalent Bourns PTV09A series 10kΩ Linear/B-taper pot).
Why this specific part?
- 10kΩ Resistance: Perfectly matches the <10kΩ source impedance requirement of the ATmega328P and SAMD21 ADCs, ensuring the 14pF sample-and-hold capacitor charges fully in a single clock cycle.
- B-Taper (Linear): Provides a mathematically straight voltage ramp from 0V to 5V, making it ideal for UI dials, motor speed controls, and threshold adjustments.
- Conductive Plastic / Cermet Element: Offers a wiper contact resistance that remains stable under 50Ω throughout its 100,000-cycle rotational lifespan, eliminating the mid-sweep voltage drops that cause ADC jitter.
- PCB Mount Footprint: The 0.2-inch pin spacing drops directly into standard solderless breadboards without requiring excessive force that breaks internal bus clips.
Wire Pin 1 to 5V, Pin 3 to GND, and Pin 2 to A0. Power the board, run a basic analogRead(A0) loop, and watch the serial monitor. You will see a clean, noise-free sweep from 0 to 1023, confirming your hardware is finally out of the way of your code.






