Bird
Raised Fist0
Raspberry Piprogramming~20 mins

Setting pin mode (IN, OUT) in Raspberry Pi - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
GPIO Pin Mode Master
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 GPIO pin mode setup code?

Consider this Python code using the RPi.GPIO library to set a pin mode and read its state:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN)
state = GPIO.input(18)
print(state)

What will this code print if the pin 18 is connected to ground?

Raspberry Pi
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN)
state = GPIO.input(18)
print(state)
A0
BRaises RuntimeError
CGPIO.IN
D1
Attempts:
2 left
💡 Hint

Remember, when a pin is set as input and connected to ground, its state reads as low.

❓ Predict Output
intermediate
2:00remaining
What happens when you set a pin as output and write HIGH?

Given this code snippet:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.HIGH)
print(GPIO.input(23))

What will be printed?

Raspberry Pi
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.HIGH)
print(GPIO.input(23))
A0
BRaises RuntimeError
C1
DGPIO.HIGH
Attempts:
2 left
💡 Hint

Output pins reflect the value you set on them.

🔧 Debug
advanced
2:00remaining
Identify the error in this pin setup code

Look at this code snippet:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, 1)
GPIO.setup(17, GPIO.IN)
print(GPIO.input(17))

What error will this code cause when run?

Raspberry Pi
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, 1)
GPIO.setup(17, GPIO.IN)
print(GPIO.input(17))
ANo error, prints 0 or 1 depending on pin state
BRuntimeWarning: Channel already in use
CRuntimeError: You must setup GPIO before using it
DTypeError: invalid argument type
Attempts:
2 left
💡 Hint

Think about setting up the same pin twice without cleanup.

🧠 Conceptual
advanced
1:30remaining
Which statement about GPIO pin modes is true?

Choose the correct statement about setting GPIO pin modes on Raspberry Pi:

APins set as output automatically detect input voltage
BPins set as output can read external voltage levels
CPins set as input can drive voltage to external devices
DPins set as input can only read voltage levels, not drive voltage
Attempts:
2 left
💡 Hint

Think about the difference between input and output pins.

❓ Predict Output
expert
2:30remaining
What is the output of this GPIO pin toggle code?

Consider this code that toggles a pin state:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.OUT)
GPIO.output(27, GPIO.LOW)
time.sleep(0.1)
GPIO.output(27, not GPIO.input(27))
print(GPIO.input(27))

What will be printed?

Raspberry Pi
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.OUT)
GPIO.output(27, GPIO.LOW)
time.sleep(0.1)
GPIO.output(27, not GPIO.input(27))
print(GPIO.input(27))
A1
B0
CRaises RuntimeError
DRaises TypeError
Attempts:
2 left
💡 Hint

Think about toggling the pin state from LOW to HIGH.

Practice

(1/5)
1. What does GPIO.setup(pin, GPIO.IN) do in Raspberry Pi programming?
easy
A. Sets the pin as an input to read signals
B. Sets the pin as an output to send signals
C. Resets the pin to default mode
D. Disables the pin

Solution

  1. Step 1: Understand the function purpose

    GPIO.setup configures a pin's mode on the Raspberry Pi.
  2. Step 2: Identify the mode set by GPIO.IN

    GPIO.IN sets the pin to input mode, allowing it to read signals.
  3. Final Answer:

    Sets the pin as an input to read signals -> Option A
  4. Quick Check:

    GPIO.IN means input mode [OK]
Hint: IN means input mode to read signals [OK]
Common Mistakes:
  • Confusing IN with OUT mode
  • Thinking it resets or disables the pin
  • Assuming it sets output mode
2. Which of the following is the correct syntax to set GPIO pin 17 as an output pin?
easy
A. GPIO.setmode(17, GPIO.OUT)
B. GPIO.setup(17, GPIO.IN)
C. GPIO.output(17, GPIO.OUT)
D. GPIO.setup(17, GPIO.OUT)

Solution

  1. Step 1: Identify the correct function to set pin mode

    GPIO.setup(pin, mode) is used to set pin mode.
  2. Step 2: Choose the correct mode for output

    GPIO.OUT sets the pin as output.
  3. Final Answer:

    GPIO.setup(17, GPIO.OUT) -> Option D
  4. Quick Check:

    Use setup with OUT for output pins [OK]
Hint: Use GPIO.setup(pin, GPIO.OUT) for output pins [OK]
Common Mistakes:
  • Using GPIO.output instead of GPIO.setup to set mode
  • Confusing GPIO.setmode with GPIO.setup
  • Setting pin as input instead of output
3. What will be the output of this code snippet?
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
print(GPIO.input(22))
medium
A. None
B. True
C. Error: Pin not set as input
D. False

Solution

  1. Step 1: Understand pin mode and output

    Pin 22 is set as output and then set to True (high voltage).
  2. Step 2: Reading pin state with GPIO.input

    Reading the pin returns the current output state, which is True.
  3. Final Answer:

    True -> Option B
  4. Quick Check:

    Output pin set True reads as True [OK]
Hint: Output pin set True reads True when input read [OK]
Common Mistakes:
  • Thinking input read only works on input pins
  • Expecting False because pin is output
  • Assuming error when reading output pin
4. Identify the error in this code snippet:
import RPi.GPIO as GPIO
GPIO.setup(5, GPIO.OUT)
GPIO.output(5, True)
medium
A. Missing GPIO.setmode() before setup
B. Wrong pin number used
C. GPIO.output() cannot set pin high
D. GPIO.setup() should use GPIO.IN

Solution

  1. Step 1: Check for GPIO mode setting

    GPIO.setmode() must be called before setup to define pin numbering scheme.
  2. Step 2: Verify setup and output usage

    Setup and output calls are correct but missing mode causes runtime error.
  3. Final Answer:

    Missing GPIO.setmode() before setup -> Option A
  4. Quick Check:

    Always call GPIO.setmode() first [OK]
Hint: Always call GPIO.setmode() before setup [OK]
Common Mistakes:
  • Skipping GPIO.setmode() call
  • Confusing setup and output functions
  • Using wrong pin numbering without setmode
5. You want to read a button press on pin 10 and turn on an LED on pin 11 when pressed. Which code correctly sets the pin modes?
hard
A. GPIO.setup(10, GPIO.OUT) GPIO.setup(11, GPIO.IN)
B. GPIO.setup(10, GPIO.IN) GPIO.setup(11, GPIO.IN)
C. GPIO.setup(10, GPIO.IN) GPIO.setup(11, GPIO.OUT)
D. GPIO.setup(10, GPIO.OUT) GPIO.setup(11, GPIO.OUT)

Solution

  1. Step 1: Determine pin roles

    Pin 10 reads button input, so it must be input mode.
  2. Step 2: Set LED pin mode

    Pin 11 controls LED output, so it must be output mode.
  3. Final Answer:

    GPIO.setup(10, GPIO.IN) GPIO.setup(11, GPIO.OUT) -> Option C
  4. Quick Check:

    Input pin for button, output pin for LED [OK]
Hint: Input for button pin, output for LED pin [OK]
Common Mistakes:
  • Reversing input and output pins
  • Setting both pins as input
  • Setting both pins as output
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard