We set a pin mode to tell the Raspberry Pi if the pin will read signals (input) or send signals (output).
When you want to read a button press from a sensor.
When you want to turn on an LED or motor.
When you connect a switch to detect if it is pressed or not.
When you want to control a device like a buzzer or relay.
When you need to read data from a sensor like a temperature sensor.
Syntax
Raspberry Pi
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) # Use Broadcom pin numbering
GPIO.setup(pin_number, GPIO.IN) # Set pin as input
GPIO.setup(pin_number, GPIO.OUT) # Set pin as output
Use GPIO.setmode(GPIO.BCM) to use the pin numbers as labeled on the Raspberry Pi board.
Use GPIO.setup() to set the pin mode before using the pin.
Examples
Set pin 17 as an input to read signals like button presses.
Raspberry Pi
GPIO.setup(17, GPIO.IN)
Set pin 18 as an output to control devices like LEDs.
Raspberry Pi
GPIO.setup(18, GPIO.OUT)
Set pin 22 as input with a pull-up resistor to avoid floating values.
Raspberry Pi
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
Sample Program
This program sets pin 18 as output and turns an LED on and off every second. It prints the LED status to the screen.
Raspberry Pi
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
pin = 18
GPIO.setup(pin, GPIO.OUT)
try:
whileTrue:
GPIO.output(pin, GPIO.HIGH) # Turn LED onprint("LED ON")
time.sleep(1)
GPIO.output(pin, GPIO.LOW) # Turn LED offprint("LED OFF")
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup() # Reset GPIO settingsprint("Program stopped")
OutputSuccess
Important Notes
Always call GPIO.cleanup() at the end to reset pins and avoid warnings next time.
Use GPIO.IN for reading signals and GPIO.OUT for sending signals.
Pull-up or pull-down resistors help keep input pins stable and avoid random readings.
Summary
Set pin mode to tell Raspberry Pi if pin is input or output.
Use GPIO.setup(pin, GPIO.IN) for input pins.
Use GPIO.setup(pin, GPIO.OUT) for output pins.
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
Step 1: Understand the function purpose
GPIO.setup configures a pin's mode on the Raspberry Pi.
Step 2: Identify the mode set by GPIO.IN
GPIO.IN sets the pin to input mode, allowing it to read signals.
Final Answer:
Sets the pin as an input to read signals -> Option A
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
Step 1: Identify the correct function to set pin mode
GPIO.setup(pin, mode) is used to set pin mode.
Step 2: Choose the correct mode for output
GPIO.OUT sets the pin as output.
Final Answer:
GPIO.setup(17, GPIO.OUT) -> Option D
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
Step 1: Understand pin mode and output
Pin 22 is set as output and then set to True (high voltage).
Step 2: Reading pin state with GPIO.input
Reading the pin returns the current output state, which is True.
Final Answer:
True -> Option B
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
Step 1: Check for GPIO mode setting
GPIO.setmode() must be called before setup to define pin numbering scheme.
Step 2: Verify setup and output usage
Setup and output calls are correct but missing mode causes runtime error.
Final Answer:
Missing GPIO.setmode() before setup -> Option A
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
Step 1: Determine pin roles
Pin 10 reads button input, so it must be input mode.
Step 2: Set LED pin mode
Pin 11 controls LED output, so it must be output mode.
Final Answer:
GPIO.setup(10, GPIO.IN)
GPIO.setup(11, GPIO.OUT) -> Option C
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 unknownstrongwhile earning +1 Grip toward your certificate.