ESP32 ADC Read Returns Incorrect Values
DodaTech
Updated 2026-06-26
1 min read
In this tutorial, you'll learn about ESP32 ADC Read Returns Incorrect Values. We cover key concepts, practical examples, and best practices.
The Problem
ESP32 analogRead() returns values that do not match the actual voltage on the pin.
Quick Fix
Wrong
int val = analogRead(34);
Serial.println(val); // Reads 4095 even at 2V
ADC reading is 4095 at 2V instead of the expected ~2710.
Right
analogReadResolution(12);
analogSetAttenuation(ADC_11db);
int val = analogRead(34);
float voltage = val * 3.3 / 4095.0;
Serial.printf("ADC: %d, Voltage: %.2fV\n", val, voltage);
ADC: 2710, Voltage: 2.18V
(Accurate for a 2.18V input on GPIO 34)
Prevention
Set read resolution with analogReadResolution(). Set attenuation with analogSetAttenuation() for proper voltage range. GPIO 34-39 are input-only ADC pins. Use calibrated readings for accuracy. Average multiple readings to reduce noise.
DodaTech engineers apply these same patterns across Doda Browser, DodaZIP, and Durga Antivirus Pro for production IoT reliability.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro