Bird
Raised Fist0
Arduinoprogramming~5 mins

ADC resolution (10-bit, 0-1023 range) in Arduino - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does 10-bit ADC resolution mean in Arduino?
It means the analog-to-digital converter can represent an analog input as one of 1024 discrete values, from 0 to 1023.
Click to reveal answer
beginner
What is the range of values produced by a 10-bit ADC?
The range is from 0 to 1023, which equals 2^10 possible values.
Click to reveal answer
intermediate
How do you calculate the voltage represented by an ADC reading?
Voltage = (ADC reading / 1023) * Reference Voltage (usually 5V or 3.3V).
Click to reveal answer
intermediate
Why is the maximum ADC value 1023 and not 1024 for a 10-bit ADC?
Because counting starts at 0, so the values go from 0 to 1023, making 1024 total steps.
Click to reveal answer
intermediate
How does increasing ADC resolution affect measurement accuracy?
Higher resolution means more precise measurements because the input voltage is divided into more steps.
Click to reveal answer
What is the maximum digital value a 10-bit ADC can output?
A512
B1023
C1024
D2048
If the reference voltage is 5V, what voltage does an ADC reading of 512 represent?
A0V
B5V
C1.25V
D2.5V
How many discrete steps does a 10-bit ADC have?
A1024
B1000
C512
D2048
Why does the ADC output start at 0 instead of 1?
ABecause counting starts at zero in digital systems
BBecause 1 is reserved for errors
CBecause 0 means maximum voltage
DBecause 0 is the reference voltage
What happens if you increase ADC resolution from 10-bit to 12-bit?
AADC range decreases
BLess precise voltage measurement
CMore precise voltage measurement
DNo change in precision
Explain how a 10-bit ADC converts an analog voltage to a digital value.
Think about how the voltage is split into small parts.
You got /4 concepts.
    Describe how to calculate the actual voltage from an ADC reading on Arduino.
    Use a simple formula involving the ADC value and reference voltage.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the maximum value returned by analogRead() on a 10-bit ADC in Arduino?
      easy
      A. 1023
      B. 255
      C. 512
      D. 4095

      Solution

      1. Step 1: Understand ADC bit resolution

        A 10-bit ADC means it can represent values from 0 to 2^10 - 1.
      2. Step 2: Calculate maximum value

        2^10 - 1 = 1024 - 1 = 1023.
      3. Final Answer:

        1023 -> Option A
      4. Quick Check:

        10-bit ADC max = 1023 [OK]
      Hint: 10-bit ADC max value is 2^10 minus 1 = 1023 [OK]
      Common Mistakes:
      • Confusing 10-bit with 8-bit max value (255)
      • Using 512 which is half range
      • Using 4095 which is 12-bit max
      2. Which of the following is the correct syntax to read an analog value from pin A0 in Arduino?
      easy
      A. readAnalog(A0);
      B. digitalRead(A0);
      C. analogReadPin(A0);
      D. analogRead(A0);

      Solution

      1. Step 1: Recall Arduino analog read syntax

        The function to read analog input is analogRead(pin).
      2. Step 2: Identify correct pin notation

        Pin A0 is correctly passed as A0, not using digitalRead or other variants.
      3. Final Answer:

        analogRead(A0); -> Option D
      4. Quick Check:

        Correct function and pin name used [OK]
      Hint: Use analogRead() with A0 for analog pin 0 [OK]
      Common Mistakes:
      • Using digitalRead(A0) which reads digital value (0 or 1)
      • Using non-existent functions like analogReadPin()
      • Using readAnalog() which is not Arduino syntax
      3. Given the code:
      int sensorValue = analogRead(A1);
      float voltage = sensorValue * (5.0 / 1023.0);
      Serial.println(voltage);

      If analogRead(A1) returns 512, what will be printed?
      medium
      A. 1.0
      B. 5.0
      C. 2.5
      D. 0.5

      Solution

      1. Step 1: Substitute sensorValue with 512

        voltage = 512 * (5.0 / 1023.0)
      2. Step 2: Calculate voltage value

        5.0 / 1023.0 ≈ 0.004887585, so voltage ≈ 512 * 0.004887585 ≈ 2.5
      3. Final Answer:

        2.5 -> Option C
      4. Quick Check:

        Half of 5V ≈ 2.5V for 512 reading [OK]
      Hint: Multiply reading by 5/1023 to get voltage [OK]
      Common Mistakes:
      • Using 1024 instead of 1023 in division
      • Confusing sensorValue with voltage directly
      • Rounding errors ignoring decimal precision
      4. What is wrong with this Arduino code snippet?
      int sensorValue = analogRead(A2);
      float voltage = sensorValue * (5 / 1023);
      Serial.println(voltage);
      medium
      A. Division uses integer math, causing voltage to be zero
      B. analogRead() cannot read from A2
      C. Serial.println() cannot print float values
      D. sensorValue should be float, not int

      Solution

      1. Step 1: Analyze division in voltage calculation

        5 / 1023 uses integer division, which results in 0.
      2. Step 2: Effect on voltage value

        Multiplying sensorValue by 0 gives voltage = 0 always.
      3. Final Answer:

        Division uses integer math, causing voltage to be zero -> Option A
      4. Quick Check:

        Use float division 5.0/1023.0 to fix [OK]
      Hint: Use decimal points for float division (5.0/1023.0) [OK]
      Common Mistakes:
      • Ignoring integer division effect
      • Thinking analogRead can't read A2
      • Believing Serial.println can't print floats
      5. You want to measure a sensor voltage that ranges from 0 to 3.3V using Arduino's 10-bit ADC with 5V reference. Which formula correctly converts the ADC reading to the sensor voltage?
      hard
      A. voltage = reading * (3.3 / 1023.0);
      B. voltage = reading * (5.0 / 1023.0);
      C. voltage = reading * (3.3 / 1024.0);
      D. voltage = reading * (5.0 / 1024.0);

      Solution

      1. Step 1: Understand ADC reference voltage

        The ADC measures voltage from 0 to 5V (reference voltage).
      2. Step 2: Calculate voltage from ADC reading

        Since ADC max is 1023, voltage = reading * (5.0 / 1023.0).
      3. Step 3: Sensor voltage range consideration

        The sensor outputs 0-3.3V, but Arduino reads 0-5V range, so conversion uses 5V scale.
      4. Final Answer:

        voltage = reading * (5.0 / 1023.0); -> Option B
      5. Quick Check:

        Use ADC reference voltage (5V) for conversion [OK]
      Hint: Always scale by ADC reference voltage, not sensor max voltage [OK]
      Common Mistakes:
      • Using sensor max voltage instead of ADC reference
      • Using 1024 instead of 1023 in denominator
      • Confusing sensor output range with ADC range