The RPi.GPIO library helps you control the pins on a Raspberry Pi to connect with lights, buttons, and sensors.
RPi.GPIO library setup in Raspberry Pi
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) # or GPIO.BOARD GPIO.setup(pin_number, GPIO.OUT) # or GPIO.IN
GPIO.setmode() chooses how you number the pins: BCM uses the chip's pin numbers, BOARD uses the physical pin numbers.
GPIO.setup() prepares a pin to be an input or output.
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT)
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.IN)
This program turns an LED connected to pin 18 on for 2 seconds, then turns it off. It cleans up the pin settings at the end.
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) # Use BCM pin numbering GPIO.setup(18, GPIO.OUT) # Set pin 18 as output try: GPIO.output(18, GPIO.HIGH) # Turn LED on print("LED is ON") time.sleep(2) # Wait 2 seconds GPIO.output(18, GPIO.LOW) # Turn LED off print("LED is OFF") finally: GPIO.cleanup() # Reset pins
Always call GPIO.cleanup() at the end to reset pins and avoid warnings next time you run your program.
Use GPIO.setmode() once at the start to choose your pin numbering style.
Make sure your Raspberry Pi has the RPi.GPIO library installed (usually pre-installed on Raspberry Pi OS).
RPi.GPIO lets you control Raspberry Pi pins with Python.
Use GPIO.setmode() to pick pin numbering style.
Use GPIO.setup() to prepare pins as input or output.
Practice
GPIO.setmode() function in the RPi.GPIO library?Solution
Step 1: Understand the role of GPIO.setmode()
This function tells the Raspberry Pi how to number the pins, either by physical board numbers (BOARD) or by Broadcom chip numbers (BCM).Step 2: Differentiate from other functions
Cleaning pins is done by GPIO.cleanup(), setting pin direction is GPIO.setup(), and reading pin value is done by GPIO.input().Final Answer:
It sets the pin numbering system to use (BOARD or BCM). -> Option AQuick Check:
GPIO.setmode() = sets pin numbering [OK]
- Confusing setmode() with cleanup()
- Thinking setmode() sets pin direction
- Mixing up setmode() with reading pin values
Solution
Step 1: Check the correct import syntax
The standard way is to import RPi.GPIO as GPIO to use GPIO functions easily.Step 2: Verify the setmode argument
To set pin numbering to BCM, use GPIO.setmode(GPIO.BCM). import RPi.GPIO as GPIO\nGPIO.setmode(GPIO.BCM) matches both correct import and setmode usage.Final Answer:
import RPi.GPIO as GPIO\nGPIO.setmode(GPIO.BCM) -> Option AQuick Check:
Import as GPIO + setmode BCM = import RPi.GPIO as GPIO\nGPIO.setmode(GPIO.BCM) [OK]
- Forgetting 'as GPIO' in import
- Using BOARD instead of BCM when BCM is asked
- Importing just GPIO without RPi
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(7, GPIO.OUT) print(GPIO.gpio_function(7))
Assuming pin 7 is set as output.
Solution
Step 1: Understand GPIO.gpio_function()
This function returns a number representing the pin's current function. For output pins, it returns 1.Step 2: Check pin setup
Pin 7 is set as GPIO.OUT, so gpio_function(7) returns 1.Final Answer:
1 -> Option DQuick Check:
Output pin function code = 1 [OK]
- Assuming gpio_function returns pin number
- Confusing output code with input code
- Not setting pin mode before calling gpio_function
import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(11, "OUT") GPIO.output(11, True) GPIO.cleanup()
Solution
Step 1: Check GPIO.setup() syntax
The direction argument must be GPIO.OUT or GPIO.IN, not a string like "OUT".Step 2: Verify other lines
GPIO.setwarnings() is optional, cleanup is correctly called last, and time module is not needed here.Final Answer:
Using string "OUT" instead of GPIO.OUT in setup. -> Option BQuick Check:
Pin direction must be GPIO.OUT, not "OUT" [OK]
- Passing pin direction as string
- Calling cleanup too early
- Forgetting to import GPIO properly
Solution
Step 1: Match numbering mode with pin number
Pin 12 in BCM mode corresponds to GPIO12, so setmode(GPIO.BCM) and setup(12) is correct.Step 2: Confirm output setup and cleanup
Pin is set as output, turned on with True, and cleanup is called last to reset pins.Final Answer:
GPIO.setmode(GPIO.BCM)\nGPIO.setup(12, GPIO.OUT)\nGPIO.output(12, True)\nGPIO.cleanup() -> Option CQuick Check:
BCM mode + pin 12 + output + cleanup = GPIO.setmode(GPIO.BCM)\nGPIO.setup(12, GPIO.OUT)\nGPIO.output(12, True)\nGPIO.cleanup() [OK]
- Mixing BOARD and BCM numbering
- Using wrong pin number for chosen mode
- Forgetting to call cleanup()
Ready to prove it?
Pass the test and this pattern moves unknown
