Home / Arduino & Microcontrollers / Arduino ADC: Reading Analog Sensors Accurately

Arduino ADC: Reading Analog Sensors Accurately

Arduino & Microcontrollers ✍ Oliver Adam ⏱ 7 min read August 7, 2026

analogRead() turns a 0–5 V pin voltage into a number 0–1023 ten bits of resolution. Getting stable, meaningful readings means understanding the reference, the source impedance limit and the noise that makes the last digits wobble.
> At a glance: 7 minute guide · part 7 of 10 in the complete Arduino guide track · includes a worked example and a quick-reference table.

## Resolution and the reference

Here is the working theory in one pass. The ADC compares the input to a reference: default 5 V (Uno), the internal 1. 1 V, or an external AREF. One count equals Vref ÷ 1024 ≈ 4. 9 mV at 5 V. Switching to the 1. 1 V reference quadruples sensitivity for small signals like thermistors and bridge sensors.

| S | e | t | t | i | n | g | | | | | | | | | | | |
| — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — |
| V | r | e | f | | | | | | | | | | | | | | |
| R | e | s | o | l | u | t | i | o | n | | ( | 1 | | L | S | B | ) |
| DEFAULT | 5 V | 4.9 mV | | | | | | | | | | | | | | | |
| INTERNAL | 1.1 V | 1.07 mV | | | | | | | | | | | | | | | |
| EXTERNAL (AREF) | Applied voltage | Vref ÷ 1024 | | | | | | | | | | | | | | | |
| Divider 2:1 on 5 V | 10 V range via divider | 9.8 mV at input | | | | | | | | | | | | | | | |

## Source impedance and settling

The ADC’s sample-and-hold capacitor needs to charge through your source. Keep source impedance below ~10 kΩ. High-impedance sensors (photoresistors, long dividers) benefit from a buffer op-amp or a 100 nF capacitor from the pin to ground.

## Noise, averaging and maps

Supply ripple and long wires add counts of noise. Read several times and average; discard the first reading after switching references or channels. Convert with map() carefully it is linear integer math or compute float scaling explicitly for accuracy.

## How to apply this in your build

Work through the sequence below each step assumes the previous one passed. For numbers that need calculating, the linked tools at the end of this guide do the arithmetic instantly.
1. Choose the reference that matches your signal range
2. Keep source impedance under 10 kΩ or buffer it
3. Average 4–10 readings for the last-digit stability
4. Convert counts to real units with explicit scaling

### Worked example

An LDR divider reading 512 counts on a 5 V reference is ~2. 5 V. The same junction read against the 1. 1 V internal reference after re-scaling the divider resolves light changes four times finer. Run the numbers yourself with the Voltage Divider Calculator and the result should agree to within rounding.

> Practical note from the bench. Small trick from our bench: analogRead twice and keep the second value the first conversion after a channel change reads low.

## Common mistakes to avoid

– Feeding more than Vref into an analog pin
– Changing reference while a voltage sits on AREF it back-feeds the chip
– Trusting single readings when two-digit averages are free

## Key takeaways

Resolution and the reference the foundation of this guide; revisit it if any measurement here surprises you.
Source impedance and settling the foundation of this guide; revisit it if any measurement here surprises you.
Noise, averaging and maps the foundation of this guide; revisit it if any measurement here surprises you.

## Who this guide is for

Beginners get a single focused topic instead of a whole textbook chapter. It assumes the track’s earlier pages in the complete Arduino guide path. Intermediate readers use it as a reference the table, the worked example and the mistake list answer the questions that come up mid-build. If you teach, the structure (theory, application, example, failure modes) maps cleanly onto a lab session.

## What you need before starting

Nothing exotic: the parts or tools named in the guide, a multimeter. The Voltage Divider Calculator open in a tab. Choose the reference that matches your signal range before you begin the guide assumes it and keep the quick-reference table above within sight while you work through the steps.

### Quick reference card

| Aspect | Where to find it in this guide |
| — | — |
| Core theory | Resolution and the reference |
| Application steps | How to apply this in your build |
| Worked numbers | Worked example |
| Failure modes | Common mistakes to avoid |

## How this fits the complete Arduino guide track

This guide is one stop in the structured learning path. Start from the [complete Arduino guide](/tutorial/arduino-complete-guide) pillar page for the full map, or continue with [PWM output explained](/tutorial/arduino-pwm-explained) and [I2C versus SPI buses](/tutorial/arduino-i2c-vs-spi). For the arithmetic, open the [Voltage Divider Calculator](/tools/voltage-divider).

## Frequently asked questions

Can I read negative voltages?
Not directly offset and scale with an op-amp stage first, or rectify if only magnitude matters.

Why does my reading drift with load?
The 5 V rail sags under load and the default reference tracks it use the internal reference for rail-independent readings.

Is there a calculator for this?
Yes the [Voltage Divider Calculator](/tools/voltage-divider) tool runs the formulas from this guide instantly, client-side, with no signup.

## Your next step in this track

– The complete arduino & microcontrollers guide: [Arduino & Microcontrollers complete guide](/tutorial/arduino-complete-guide)
– Read next: [what is an embedded system? microcontrollers in everything](/tutorial/what-is-embedded-system)
– Also in this track: [esp32 vs stm32: choosing your next microcontroller](/tutorial/esp32-vs-stm32-comparison)
– Continue with: [arduino ide 2 setup: from download to first upload](/tutorial/arduino-ide-setup-guide)
– Calculate as you go: [LED series resistor finder](/tools/led-resistor) · [battery runtime estimator](/tools/battery-life) · [555 frequency calculator](/tools/timer-555-astable)
– From here, the natural continuation is the next guide in the track index. It assumes exactly the vocabulary this page built and adds the next layer of practice.

## Practical working notes

Component substitution is a legitimate experiment as long as it is deliberate. Swap one part, predict the effect, measure, and record. That single habit converts a parts bin into a teaching lab and makes every future guide in this track faster to absorb.

The fastest way to internalise this topic is to change one variable deliberately and predict the result before measuring. Wrong predictions are the curriculum, they show exactly which mental model needs revisiting, and the bench grades honestly.

## Experience notes

Anything with motors, servos or many LEDs needs external supply with common ground. USB is for logic only.

Uninitialised variables and pins left floating. Set every pinMode and initial state in setup.

## One last piece of advice

A note on power, the silent variable in this track: most “code bugs” on microcontroller benches are supply problems wearing a sketch costume. Measure the 5V rail under load before touching firmware.

Working through Resolution and the referenceand Source impedance and settling with that habit in mind takes minutes, and it is the difference between reading about this topic and owning it.