Bird
Raised Fist0
Arduinoprogramming~10 mins

Reading a potentiometer in Arduino - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to read the analog value from the potentiometer.

Arduino
int sensorValue = analogRead([1]);
Drag options to blanks, or click blank then click option'
A5
B13
CA0
DLED_BUILTIN
Attempts:
3 left
💡 Hint
Common Mistakes
Using a digital pin number instead of an analog pin.
Using the built-in LED pin instead of the analog input.
2fill in blank
medium

Complete the code to print the potentiometer value to the Serial Monitor.

Arduino
Serial.println([1]);
Drag options to blanks, or click blank then click option'
ApotValue
BsensorValue + 1
CanalogRead(A0)
DsensorValue
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to print the function call instead of the variable.
Using a variable name that was not declared.
3fill in blank
hard

Fix the error in the setup function to initialize serial communication.

Arduino
void setup() {
  Serial.begin([1]);
}
Drag options to blanks, or click blank then click option'
A96000
B9600
C960
D115200
Attempts:
3 left
💡 Hint
Common Mistakes
Using an incorrect baud rate that causes communication failure.
Typing the baud rate with missing zeros.
4fill in blank
hard

Fill both blanks to create a loop that reads and prints the potentiometer value repeatedly.

Arduino
void loop() {
  int sensorValue = analogRead([1]);
  Serial.println([2]);
  delay(500);
}
Drag options to blanks, or click blank then click option'
AA0
BsensorValue
CA1
DpotValue
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong pin number.
Printing a variable that was not declared.
5fill in blank
hard

Fill all three blanks to map the potentiometer value to a range from 0 to 255 and print it.

Arduino
int sensorValue = analogRead([1]);
int outputValue = map(sensorValue, [2], 1023, 0, 255);
Serial.println([3]);
Drag options to blanks, or click blank then click option'
AA0
B0
CoutputValue
D512
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong pin for reading.
Using an incorrect minimum value in the map function.
Printing the wrong variable.

Practice

(1/5)
1. What does the analogRead(pin) function do when reading a potentiometer on Arduino?
easy
A. It reads the voltage level on the analog pin and returns a value from 0 to 1023.
B. It sets the output voltage of the pin to control the potentiometer.
C. It converts a digital signal to an analog voltage.
D. It resets the potentiometer to zero position.

Solution

  1. Step 1: Understand analogRead function

    The analogRead(pin) reads the voltage on the specified analog pin and converts it to a number between 0 and 1023.
  2. Step 2: Relate to potentiometer reading

    Since a potentiometer outputs a variable voltage depending on its position, analogRead returns a value representing that voltage level.
  3. Final Answer:

    It reads the voltage level on the analog pin and returns a value from 0 to 1023. -> Option A
  4. Quick Check:

    analogRead() returns 0-1023 value [OK]
Hint: Remember analogRead returns 0-1023 for voltage levels [OK]
Common Mistakes:
  • Thinking analogRead sets voltage instead of reading it
  • Confusing analogRead with digitalRead
  • Assuming analogRead returns voltage in volts
2. Which of the following is the correct syntax to read a potentiometer connected to analog pin A0 and store the value in a variable named sensorValue?
easy
A. sensorValue = analogWrite(A0);
B. sensorValue = digitalRead(A0);
C. sensorValue = analogRead(A0);
D. sensorValue = readAnalog(A0);

Solution

  1. Step 1: Identify correct function for analog input

    The function to read analog input is analogRead(pin), not digitalRead or analogWrite.
  2. Step 2: Check variable assignment syntax

    Assigning the result of analogRead(A0) to sensorValue uses the syntax: sensorValue = analogRead(A0);
  3. Final Answer:

    sensorValue = analogRead(A0); -> Option C
  4. Quick Check:

    Use analogRead() to read analog pin [OK]
Hint: Use analogRead(pin) to read analog sensors [OK]
Common Mistakes:
  • Using digitalRead instead of analogRead
  • Using analogWrite which is for output
  • Using a non-existent function readAnalog
3. What will be printed on the Serial Monitor when the following Arduino code runs and the potentiometer is turned to mid position?
void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  delay(1000);
}
medium
A. A value close to 0 printed every second
B. A value close to 1023 printed every second
C. No output because Serial.begin is missing
D. A value close to 512 printed every second

Solution

  1. Step 1: Understand analogRead output range

    The potentiometer at mid position outputs about half the voltage, so analogRead(A0) returns around 512 (half of 1023).
  2. Step 2: Analyze Serial output

    The code prints the sensorValue every 1000 milliseconds (1 second), so the Serial Monitor shows a value near 512 each second.
  3. Final Answer:

    A value close to 512 printed every second -> Option D
  4. Quick Check:

    Mid potentiometer = ~512 output [OK]
Hint: Mid potentiometer gives about half max value 512 [OK]
Common Mistakes:
  • Expecting 0 or 1023 at mid position
  • Forgetting Serial.begin causes no output
  • Confusing analogRead with digitalRead values
4. The following code is intended to read a potentiometer and print its value, but it does not work correctly. What is the error?
void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue;
  sensorValue = analogRead(0);
  Serial.print(sensorValue);
  delay(500);
}
medium
A. Missing Serial.println instead of Serial.print
B. Serial.begin baud rate is too low
C. No delay after Serial.print
D. Using analogRead(0) instead of analogRead(A0)

Solution

  1. Step 1: Check Serial output method

    The code uses Serial.print(sensorValue) without a newline, causing consecutive values to print on the same line and appear garbled or unreadable.
  2. Step 2: Use println for readability

    Serial.println(sensorValue) adds a newline after each value, making the output clear on the Serial Monitor.
  3. Final Answer:

    Missing Serial.println instead of Serial.print -> Option A
  4. Quick Check:

    Serial.print vs println for newlines [OK]
Hint: Use Serial.println() not print() for readable output [OK]
Common Mistakes:
  • Using numeric 0 instead of A0 for analogRead
  • Confusing Serial.print and Serial.println
  • Ignoring delay causing fast output
5. You want to read a potentiometer and map its 0-1023 value to a 0-255 range to control LED brightness using PWM on pin 9. Which code snippet correctly does this?
hard
A. int sensorValue = analogRead(9); int brightness = map(sensorValue, 0, 255, 0, 1023); analogWrite(A0, brightness);
B. int sensorValue = analogRead(A0); int brightness = map(sensorValue, 0, 1023, 0, 255); analogWrite(9, brightness);
C. int sensorValue = digitalRead(A0); int brightness = sensorValue * 255; analogWrite(9, brightness);
D. int sensorValue = analogRead(A0); int brightness = sensorValue / 4; digitalWrite(9, brightness);

Solution

  1. Step 1: Read potentiometer value correctly

    Use analogRead(A0) to get a value from 0 to 1023.
  2. Step 2: Map value to 0-255 for PWM

    Use map(sensorValue, 0, 1023, 0, 255) to convert the range for LED brightness.
  3. Step 3: Write PWM value to LED pin

    Use analogWrite(9, brightness) to set LED brightness on pin 9.
  4. Final Answer:

    int sensorValue = analogRead(A0); int brightness = map(sensorValue, 0, 1023, 0, 255); analogWrite(9, brightness); -> Option B
  5. Quick Check:

    Read analog, map range, write PWM [OK]
Hint: Use map() to convert 0-1023 to 0-255 for PWM [OK]
Common Mistakes:
  • Using digitalRead instead of analogRead
  • Writing PWM to analog pin or wrong pin
  • Using digitalWrite for PWM control