Bird
Raised Fist0
Arduinoprogramming~20 mins

pinMode() function behavior in Arduino - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
pinMode Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Arduino code snippet?

Consider the following Arduino code running on a board with an LED connected to pin 13. What will be the state of the LED after running this code?

Arduino
void setup() {
  pinMode(13, INPUT);
  digitalWrite(13, HIGH);
}

void loop() {}
AThe LED will be ON because pin 13 is set HIGH.
BThe LED will be OFF because pin 13 is set as INPUT and digitalWrite enables the pull-up resistor but does not power the LED.
CThe LED will blink because pinMode is INPUT and digitalWrite toggles the pin.
DThe code will not compile due to incorrect pinMode usage.
Attempts:
2 left
💡 Hint

Remember that setting a pin as INPUT disables the output driver, so digitalWrite does not turn the LED on.

Predict Output
intermediate
2:00remaining
What happens when pinMode() is set to OUTPUT and digitalWrite() is LOW?

Given this Arduino code, what will be the voltage level on pin 8?

Arduino
void setup() {
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
}

void loop() {}
APin 8 will output 5V (HIGH).
BPin 8 will cause a short circuit.
CPin 8 will output 0V (LOW).
DPin 8 will be in high impedance state.
Attempts:
2 left
💡 Hint

Think about what OUTPUT mode and LOW signal mean for voltage.

Predict Output
advanced
2:00remaining
What is the effect of digitalWrite() on a pin set as INPUT_PULLUP?

Analyze this Arduino code. What will be the voltage level on pin 7 after setup?

Arduino
void setup() {
  pinMode(7, INPUT_PULLUP);
  digitalWrite(7, LOW);
}

void loop() {}
AThe code will cause a runtime error.
BPin 7 will be driven LOW externally at 0V.
CPin 7 will have an internal pull-up enabled, voltage near 5V.
DPin 7 will be floating with no defined voltage.
Attempts:
2 left
💡 Hint

INPUT_PULLUP mode enables an internal resistor. What does digitalWrite do in this mode?

Predict Output
advanced
2:00remaining
What error or output occurs with this pinMode misuse?

What happens when you run this Arduino code?

Arduino
void setup() {
  pinMode(20, OUTPUT);
}

void loop() {}
APin 20 is set as OUTPUT successfully with no error.
BCompilation error: pin 20 does not exist on most Arduino boards.
CRuntime error: invalid pin number causes crash.
DPin 20 is set as INPUT by default.
Attempts:
2 left
💡 Hint

Check the pin numbers available on common Arduino boards like Uno.

🧠 Conceptual
expert
3:00remaining
How does pinMode() affect the behavior of digitalWrite() and digitalRead()?

Which statement best describes the relationship between pinMode() settings and the behavior of digitalWrite() and digitalRead() functions?

ASetting pinMode to INPUT disables digitalWrite(); digitalRead() reads the pin voltage or pull-up state.
BSetting pinMode to OUTPUT allows digitalWrite() to set voltage levels; digitalRead() reads the output voltage.
CSetting pinMode to INPUT_PULLUP enables internal pull-up resistor; digitalWrite(LOW) disables it.
DpinMode has no effect on digitalWrite() or digitalRead() behavior.
Attempts:
2 left
💡 Hint

Consider what happens when a pin is INPUT vs OUTPUT and how digitalWrite and digitalRead behave.

Practice

(1/5)
1. What does the pinMode() function do in an Arduino sketch?
easy
A. It sets a pin as input or output to control how it behaves.
B. It reads the value from a pin.
C. It writes a value to a pin.
D. It resets the Arduino board.

Solution

  1. Step 1: Understand the purpose of pinMode()

    The pinMode() function tells the Arduino whether a pin will be used to read signals (input) or send signals (output).
  2. Step 2: Differentiate from other functions

    Reading values is done by digitalRead(), writing by digitalWrite(), and resetting is unrelated to pinMode().
  3. Final Answer:

    It sets a pin as input or output to control how it behaves. -> Option A
  4. Quick Check:

    pinMode() sets pin direction = C [OK]
Hint: pinMode() sets pin direction: input or output [OK]
Common Mistakes:
  • Confusing pinMode() with digitalRead() or digitalWrite()
  • Thinking pinMode() reads or writes values
  • Assuming pinMode() resets the board
2. Which of the following is the correct syntax to set pin 7 as an output pin?
easy
A. pinMode(7, OUTPUT);
B. pinMode(OUTPUT, 7);
C. pinMode(7, "OUTPUT");
D. pinMode(7);

Solution

  1. Step 1: Recall pinMode() syntax

    The correct syntax is pinMode(pinNumber, mode); where mode is a constant like OUTPUT without quotes.
  2. Step 2: Check each option

    pinMode(7, OUTPUT); matches the correct syntax. pinMode(OUTPUT, 7); reverses parameters. pinMode(7, "OUTPUT"); uses quotes incorrectly. pinMode(7); misses the mode parameter.
  3. Final Answer:

    pinMode(7, OUTPUT); -> Option A
  4. Quick Check:

    pinMode(pin, mode) correct order = B [OK]
Hint: pinMode(pin, mode) with mode as constant, no quotes [OK]
Common Mistakes:
  • Swapping parameters order
  • Using quotes around OUTPUT
  • Omitting the mode parameter
3. What will be the output on the serial monitor after running this code?
void setup() {
  pinMode(3, INPUT_PULLUP);
  Serial.begin(9600);
  Serial.println(digitalRead(3));
}
void loop() {}
medium
A. No output
B. 0
C. Error: pinMode not set correctly
D. 1

Solution

  1. Step 1: Understand INPUT_PULLUP behavior

    Setting pin 3 as INPUT_PULLUP activates an internal pull-up resistor, so the pin reads HIGH (1) if not connected to ground.
  2. Step 2: digitalRead on pin 3

    Since nothing else is connected, digitalRead(3) returns 1, which is printed to the serial monitor.
  3. Final Answer:

    1 -> Option D
  4. Quick Check:

    INPUT_PULLUP reads HIGH = 1 [OK]
Hint: INPUT_PULLUP makes pin read HIGH if unconnected [OK]
Common Mistakes:
  • Expecting 0 instead of 1 for INPUT_PULLUP
  • Thinking pinMode causes error
  • Assuming no output without loop code
4. Identify the error in this code snippet:
void setup() {
  pinMode(13, "OUTPUT");
  digitalWrite(13, HIGH);
}
void loop() {}
medium
A. Pin number 13 is invalid.
B. Missing Serial.begin() in setup().
C. The mode parameter in pinMode() should not be in quotes.
D. digitalWrite() cannot be used in setup().

Solution

  1. Step 1: Check pinMode() parameter types

    The mode parameter must be a constant like OUTPUT without quotes. Using quotes makes it a string, causing a compile error.
  2. Step 2: Verify other parts

    Pin 13 is valid. digitalWrite() can be used in setup(). Serial.begin() is not required here.
  3. Final Answer:

    The mode parameter in pinMode() should not be in quotes. -> Option C
  4. Quick Check:

    pinMode mode no quotes = D [OK]
Hint: Use OUTPUT without quotes in pinMode() [OK]
Common Mistakes:
  • Putting mode in quotes
  • Thinking pin 13 is invalid
  • Believing digitalWrite() can't be in setup()
5. You want to connect a push button to pin 2 and read its state without an external resistor. Which pinMode() setting should you use to ensure the pin reads HIGH when the button is not pressed?
hard
A. pinMode(2, OUTPUT);
B. pinMode(2, INPUT_PULLUP);
C. pinMode(2, INPUT);
D. pinMode(2, INPUT_PULLDOWN);

Solution

  1. Step 1: Understand button wiring without external resistor

    Without an external resistor, the internal pull-up resistor must be enabled to keep the pin HIGH when the button is not pressed.
  2. Step 2: Choose correct pinMode()

    Using INPUT_PULLUP activates the internal pull-up resistor. INPUT alone leaves the pin floating. OUTPUT is wrong for reading. INPUT_PULLDOWN is not standard on Arduino.
  3. Final Answer:

    pinMode(2, INPUT_PULLUP); -> Option B
  4. Quick Check:

    Use INPUT_PULLUP for internal resistor = A [OK]
Hint: Use INPUT_PULLUP to avoid external resistor on button pin [OK]
Common Mistakes:
  • Using INPUT without pull-up resistor causes floating pin
  • Trying OUTPUT mode to read button
  • Assuming INPUT_PULLDOWN exists on all Arduino boards