We use single LED control to turn a light on or off with a Raspberry Pi. It helps us learn how to control hardware with code.
To make a simple indicator light for a project.
To learn how to control physical devices with programming.
To test if your Raspberry Pi's GPIO pins work correctly.
To create a basic alert system that lights up when something happens.
Syntax
Raspberry Pi
import RPi.GPIO as GPIO
import time
LED_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on# ... wait or do something ...
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off
GPIO.cleanup()
Use GPIO.setmode(GPIO.BCM) to refer to pins by their Broadcom number.
Always call GPIO.cleanup() at the end to reset pins safely.
Examples
This line sends power to the LED pin, lighting it up.
Raspberry Pi
GPIO.output(LED_PIN, GPIO.HIGH) # Turns the LED on
This line stops power to the LED pin, turning it off.
Raspberry Pi
GPIO.output(LED_PIN, GPIO.LOW) # Turns the LED off
This prepares the pin to send power to the LED.
Raspberry Pi
GPIO.setup(LED_PIN, GPIO.OUT) # Sets the pin as output
Sample Program
This program turns the LED on for 3 seconds, then turns it off. It shows how to control the LED with simple commands.
Raspberry Pi
import RPi.GPIO as GPIO
import time
LED_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
print('LED will turn on for 3 seconds...')
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on
time.sleep(3) # Wait 3 seconds
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED offprint('LED is now off.')
GPIO.cleanup()
OutputSuccess
Important Notes
Make sure your LED is connected with a resistor to avoid damage.
Use the correct GPIO pin number matching your wiring.
Run the program with sudo if you get permission errors.
Summary
Single LED control lets you turn a light on or off using Raspberry Pi code.
You set the pin as output, then send HIGH or LOW signals to control the LED.
Always clean up GPIO settings after your program finishes.
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.