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
Reading Analog Sensor Values with analogRead()
📖 Scenario: You have a temperature sensor connected to an Arduino analog pin. You want to read the sensor's voltage using the analog-to-digital converter (ADC) and convert it into a digital value.
🎯 Goal: Build a simple Arduino program that reads an analog sensor value using analogRead(), stores it, and prints the digital value to the Serial Monitor.
📋 What You'll Learn
Create a variable to store the analog pin number
Create a variable to store the analog reading
Use analogRead() to read the sensor value
Print the analog reading to the Serial Monitor
💡 Why This Matters
🌍 Real World
Reading analog sensors like temperature, light, or potentiometers is common in electronics projects to get real-world data.
💼 Career
Understanding ADC and analogRead() is essential for embedded systems and hardware interfacing jobs.
Progress0 / 4 steps
1
Set up the analog pin variable
Create an integer variable called sensorPin and set it to A0 to represent the analog pin where the sensor is connected.
Arduino
Hint
Use int sensorPin = A0; to assign the analog pin.
2
Create a variable to store the analog reading
Create an integer variable called sensorValue to store the value read from the analog pin.
Arduino
Hint
Initialize sensorValue to 0 before reading the sensor.
3
Read the analog value from the sensor
Inside the loop() function, use analogRead(sensorPin) to read the sensor value and store it in sensorValue.
Arduino
Hint
Use sensorValue = analogRead(sensorPin); inside loop().
4
Print the analog reading to the Serial Monitor
Add a Serial.println(sensorValue); statement inside the loop() function to display the analog reading on the Serial Monitor.
Arduino
Hint
Use Serial.println(sensorValue); to print the value.
Practice
(1/5)
1. What does the analogRead() function do on an Arduino?
easy
A. It writes a voltage level to an analog pin.
B. It sends a digital signal to an output pin.
C. It resets the Arduino board.
D. It reads an analog voltage and converts it to a number between 0 and 1023.
Solution
Step 1: Understand the purpose of analogRead()
The function analogRead() reads the voltage on an analog pin and converts it to a number.
Step 2: Know the range of values returned
The returned value ranges from 0 (0 volts) to 1023 (maximum reference voltage, usually 5V or 3.3V).
Final Answer:
It reads an analog voltage and converts it to a number between 0 and 1023. -> Option D
Quick Check:
analogRead() returns 0-1023 [OK]
Hint: Remember: analogRead() maps voltage to 0-1023 [OK]
Common Mistakes:
Thinking analogRead() writes voltage
Confusing analogRead() with digitalWrite()
Assuming analogRead() returns voltage directly
Believing analogRead() resets the board
2. Which of the following is the correct syntax to read an analog value from pin A0?
easy
A. int sensorValue = analogRead(A0);
B. int sensorValue = digitalRead(A0);
C. analogRead(int A0);
D. int sensorValue = analogWrite(A0);
Solution
Step 1: Identify the correct function for analog input
The function to read analog input is analogRead(), not digitalRead() or analogWrite().
Step 2: Check the syntax for reading from pin A0
The correct syntax is int sensorValue = analogRead(A0); which stores the read value in an integer variable.
Final Answer:
int sensorValue = analogRead(A0); -> Option A
Quick Check:
Use analogRead(pin) to read analog input [OK]
Hint: Use analogRead(pin) to get analog input value [OK]
Common Mistakes:
Using digitalRead() for analog pins
Calling analogRead() with wrong syntax
Using analogWrite() instead of analogRead()
Trying to pass pin as int inside analogRead()
3. What will be the output of this Arduino code snippet if the analog voltage on pin A1 is 2.5V and the reference voltage is 5V?
int sensorValue = analogRead(A1);
Serial.println(sensorValue);
medium
A. 1023
B. 512
C. 256
D. 0
Solution
Step 1: Understand the ADC conversion formula
The analogRead() converts voltage to a value between 0 and 1023 based on the formula: value = (input voltage / reference voltage) * 1023.
Step 2: Calculate the expected value for 2.5V input
value = (2.5 / 5) * 1023 = 0.5 * 1023 = 511.5, which rounds to 512.
Final Answer:
512 -> Option B
Quick Check:
Half of 1023 is about 512 [OK]
Hint: Multiply voltage ratio by 1023 for analogRead() value [OK]
Common Mistakes:
Using 1023 directly without scaling
Confusing digitalRead() output with analogRead()
Rounding errors ignoring half values
Assuming analogRead() returns voltage in volts
4. Identify the error in this Arduino code that reads an analog value and prints it:
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(0);
Serial.print(val);
delay(1000);
}
medium
A. Serial.begin() must be called inside loop(), not setup().
B. delay() cannot be used with Serial.print().
C. analogRead() should use A0 instead of 0 for clarity and correctness.
D. The variable val must be declared as float, not int.
Solution
Step 1: Check the analogRead() argument
Using 0 instead of A0 can work but is discouraged; A0 is the correct constant for analog pin 0.
Step 2: Verify other code parts
Serial.begin() is correctly in setup(), delay() works fine with Serial.print(), and int is suitable for analogRead() values.
Final Answer:
analogRead() should use A0 instead of 0 for clarity and correctness. -> Option C
Quick Check:
Use A0 for analog pin 0 [OK]
Hint: Use A0 constant for analog pin 0 [OK]
Common Mistakes:
Using numeric 0 instead of A0 for analogRead()
Moving Serial.begin() to loop() causing repeated starts
Thinking delay() stops Serial.print()
Declaring analogRead() result as float unnecessarily
5. You want to measure a sensor voltage that ranges from 0V to 3.3V using Arduino's analogRead() with a 5V reference. How can you correctly convert the analogRead() value to the actual voltage?
hard
A. Voltage = (analogRead() / 1023.0) * 5.0
B. Voltage = (analogRead() / 1023.0) * 3.3
C. Voltage = (analogRead() / 5.0) * 3.3
D. Voltage = analogRead() * 3.3 / 1023
Solution
Step 1: Understand the reference voltage and sensor range
The Arduino ADC uses 5V as reference, so analogRead() maps 0-5V to 0-1023.
Step 2: Calculate voltage from analogRead() value
To get voltage, multiply the fraction (analogRead()/1023) by 5.0 (the reference voltage), not 3.3.
Final Answer:
Voltage = (analogRead() / 1023.0) * 5.0 -> Option A
Quick Check:
Use reference voltage (5V) in conversion formula [OK]
Hint: Multiply analogRead ratio by reference voltage (5V) [OK]
Common Mistakes:
Using sensor max voltage (3.3V) instead of reference voltage (5V)
Dividing by 5 instead of 1023
Multiplying analogRead() directly without division