📖 Scenario: You have a Raspberry Pi and a single LED connected to GPIO pin 17. You want to control this LED by turning it on and off using a simple Python program.
🎯 Goal: Build a Python program that sets up the GPIO pin, turns the LED on, waits for 2 seconds, then turns the LED off.
📋 What You'll Learn
Use the RPi.GPIO library to control the GPIO pins
Set GPIO mode to BCM
Set up GPIO pin 17 as an output
Turn the LED on by setting pin 17 to HIGH
Wait for 2 seconds
Turn the LED off by setting pin 17 to LOW
Clean up the GPIO settings at the end
💡 Why This Matters
🌍 Real World
Controlling LEDs is a basic skill for Raspberry Pi projects like indicators, alerts, or simple light displays.
💼 Career
Understanding GPIO control is essential for hardware interfacing roles, embedded systems, and IoT development.
Progress0 / 4 steps
1
Setup GPIO and LED pin
Import the RPi.GPIO library as GPIO and the time module. Set the GPIO mode to GPIO.BCM. Then create a variable called led_pin and set it to 17. Finally, set up led_pin as an output pin using GPIO.setup().
Raspberry Pi
Hint
Remember to import both RPi.GPIO and time. Use GPIO.setmode(GPIO.BCM) to set the pin numbering mode. Then set up pin 17 as output.
2
Turn the LED on
Use GPIO.output() to set led_pin to GPIO.HIGH to turn the LED on.
Raspberry Pi
Hint
Use GPIO.output(led_pin, GPIO.HIGH) to turn the LED on.
3
Wait for 2 seconds
Use time.sleep() to pause the program for 2 seconds.
Raspberry Pi
Hint
Use time.sleep(2) to wait for 2 seconds.
4
Turn the LED off and clean up
Use GPIO.output() to set led_pin to GPIO.LOW to turn the LED off. Then call GPIO.cleanup() to reset the GPIO pins. Finally, print "LED turned off" to show the program finished.
Raspberry Pi
Hint
Turn off the LED with GPIO.output(led_pin, GPIO.LOW), then clean up with GPIO.cleanup(). Use print("LED turned off") to show the result.
Practice
(1/5)
1. What is the main purpose of setting a GPIO pin as output when controlling a single LED on a Raspberry Pi?
easy
A. To send signals that turn the LED on or off
B. To read the LED's brightness level
C. To connect the LED to the internet
D. To power the Raspberry Pi itself
Solution
Step 1: Understand GPIO pin modes
GPIO pins can be set as input or output. Output pins send signals to devices like LEDs.
Step 2: Purpose of output mode for LED
Setting a pin as output allows the Raspberry Pi to send HIGH or LOW signals to turn the LED on or off.
Final Answer:
To send signals that turn the LED on or off -> Option A
Quick Check:
Output mode controls LED state [OK]
Hint: Output pins send signals to control devices like LEDs [OK]
Common Mistakes:
Confusing input with output mode
Thinking GPIO controls power supply
Assuming GPIO reads LED brightness
2. Which of the following is the correct way to import the GPIO library and set pin 18 as output in Python for Raspberry Pi?
easy
A. import RPi.GPIO as GPIO\nGPIO.setup(18, GPIO.OUT)
B. import RPi.GPIO as GPIO\nGPIO.setup(18, GPIO.IN)
C. import gpiozero\nGPIO.setup(18, GPIO.OUT)
D. import RPi.GPIO as GPIO\nGPIO.output(18, GPIO.OUT)
Solution
Step 1: Import the correct library
Use import RPi.GPIO as GPIO to access GPIO functions.
Step 2: Set pin 18 as output
Use GPIO.setup(18, GPIO.OUT) to configure pin 18 for output.
Final Answer:
import RPi.GPIO as GPIO\nGPIO.setup(18, GPIO.OUT) -> Option A
Quick Check:
GPIO setup output = correct syntax [OK]
Hint: Use GPIO.setup(pin, GPIO.OUT) to set output pin [OK]
Common Mistakes:
Using GPIO.IN instead of GPIO.OUT
Calling GPIO.output instead of GPIO.setup for pin mode
Importing wrong library like gpiozero
3. What will be the output on the LED when running this Python code on Raspberry Pi?
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)
time.sleep(2)
GPIO.output(17, GPIO.LOW)
GPIO.cleanup()
medium
A. LED stays off for 2 seconds, then turns on
B. LED blinks rapidly for 2 seconds
C. LED turns on for 2 seconds, then turns off
D. Code causes an error and LED does not light
Solution
Step 1: Analyze GPIO output commands
The code sets pin 17 HIGH, turning LED on, waits 2 seconds, then sets pin 17 LOW, turning LED off.
Step 2: Understand timing and cleanup
The LED stays on during time.sleep(2), then turns off before cleanup.
Final Answer:
LED turns on for 2 seconds, then turns off -> Option C
Quick Check:
GPIO.HIGH = LED on, GPIO.LOW = LED off [OK]
Hint: HIGH turns LED on, LOW turns it off [OK]
Common Mistakes:
Confusing HIGH and LOW signals
Ignoring the sleep delay effect
Forgetting GPIO.cleanup() importance
4. Identify the error in this Raspberry Pi LED control code:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)
GPIO.output(12, HIGH)
GPIO.cleanup()
medium
A. GPIO.cleanup() should be called before output
B. Missing import for time module
C. Pin 12 cannot be used as output
D. Incorrect use of GPIO.HIGH without prefix
Solution
Step 1: Check GPIO output command
The code uses HIGH without GPIO. prefix, causing a NameError.
Step 2: Correct usage of HIGH signal
It should be GPIO.output(12, GPIO.HIGH) to properly reference the constant.
Final Answer:
Incorrect use of GPIO.HIGH without prefix -> Option D
Quick Check:
Use GPIO.HIGH, not just HIGH [OK]
Hint: Always prefix HIGH with GPIO. [OK]
Common Mistakes:
Using HIGH instead of GPIO.HIGH
Calling cleanup before output
Confusing BOARD and BCM modes
5. You want to write a Python program on Raspberry Pi that turns an LED on for 1 second, off for 1 second, and repeats this 5 times. Which code snippet correctly implements this behavior?
hard
A. import RPi.GPIO as GPIO\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(21, GPIO.OUT)\nGPIO.output(21, GPIO.HIGH)\ntime.sleep(5)\nGPIO.output(21, GPIO.LOW)\nGPIO.cleanup()
B. import RPi.GPIO as GPIO\nimport time\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(21, GPIO.OUT)\nfor i in range(5):\n GPIO.output(21, GPIO.HIGH)\n time.sleep(1)\n GPIO.output(21, GPIO.LOW)\n time.sleep(1)\nGPIO.cleanup()
C. import RPi.GPIO as GPIO\nimport time\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(21, GPIO.OUT)\nfor i in range(5):\n GPIO.output(21, GPIO.LOW)\n time.sleep(1)\n GPIO.output(21, GPIO.HIGH)\n time.sleep(1)\nGPIO.cleanup()
D. import RPi.GPIO as GPIO\nimport time\nGPIO.setmode(GPIO.BCM)\nGPIO.setup(21, GPIO.OUT)\nGPIO.output(21, GPIO.HIGH)\ntime.sleep(1)\nGPIO.output(21, GPIO.LOW)\ntime.sleep(1)
Solution
Step 1: Understand the loop for repetition
The code uses for i in range(5): to repeat the on/off cycle 5 times.
Step 2: Correct on/off timing inside loop
Inside the loop, the LED is turned on (GPIO.HIGH) for 1 second, then off (GPIO.LOW) for 1 second.
Final Answer:
Code snippet C correctly repeats LED on/off 5 times with 1 second intervals -> Option B
Quick Check:
Loop with GPIO.HIGH then GPIO.LOW and sleep [OK]
Hint: Use a loop with GPIO.HIGH, sleep, GPIO.LOW, sleep [OK]
Common Mistakes:
Swapping HIGH and LOW timing order
Missing import of time module
Not using a loop for repetition
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.