An LED class helps you control a light on your Raspberry Pi easily. It lets you turn the light on, off, or blink it with simple commands.
LED class and methods in Raspberry Pi
class LED: def __init__(self, pin): # Setup the pin for output pass def on(self): # Turn the LED on pass def off(self): # Turn the LED off pass def blink(self, times, interval): # Blink the LED a number of times with delay pass
The __init__ method sets up the LED on a specific pin.
Methods like on(), off(), and blink() control the LED's behavior.
led = LED(17)
led.on()led = LED(18)
led.off()led = LED(22) led.blink(3, 0.5)
This program creates an LED object on pin 17. It turns the LED on for 1 second, then off, then blinks it 3 times with half-second intervals. Finally, it cleans up the GPIO pins.
import time import RPi.GPIO as GPIO class LED: def __init__(self, pin): self.pin = pin GPIO.setmode(GPIO.BCM) GPIO.setup(self.pin, GPIO.OUT) def on(self): GPIO.output(self.pin, GPIO.HIGH) def off(self): GPIO.output(self.pin, GPIO.LOW) def blink(self, times, interval): for _ in range(times): self.on() time.sleep(interval) self.off() time.sleep(interval) # Example usage led = LED(17) print("Turning LED on") led.on() time.sleep(1) print("Turning LED off") led.off() print("Blinking LED 3 times") led.blink(3, 0.5) GPIO.cleanup()
Always call GPIO.cleanup() at the end to reset the pins safely.
Use the BCM pin numbering mode for clarity and consistency.
Make sure your LED is connected with a resistor to avoid damage.
An LED class makes controlling lights on Raspberry Pi simple and organized.
Use on(), off(), and blink() methods to control the LED.
Remember to clean up GPIO pins after your program finishes.
Practice
What does the on() method of an LED class typically do in Raspberry Pi programming?
Solution
Step 1: Understand the purpose of
Theon()methodon()method is designed to switch the LED light to the ON state.Step 2: Compare with other methods
Other methods likeoff()turn the LED off, andblink()makes it blink. Cleanup is done separately.Final Answer:
Turns the LED light on -> Option AQuick Check:
on()means LED ON [OK]
- Confusing on() with off()
- Thinking on() cleans GPIO pins
- Assuming on() makes LED blink
Which of the following is the correct way to create an LED object on GPIO pin 17 using the gpiozero library?
from gpiozero import LED led = ?
Solution
Step 1: Recall LED object creation syntax
In gpiozero, you create an LED by calling LED(pin_number), e.g., LED(17).Step 2: Check other options for syntax errors
Options A, B, and D use invalid Python syntax for object creation.Final Answer:
LED(17) -> Option AQuick Check:
LED(pin) = LED(17) [OK]
- Using square brackets instead of parentheses
- Trying to call a method like LED.pin()
- Using curly braces which are invalid here
What will be the output of this code snippet controlling an LED?
from gpiozero import LED
from time import sleep
led = LED(22)
led.on()
sleep(1)
led.off()
print('LED state:', led.is_lit)Solution
Step 1: Trace the LED state changes
The LED is turned on, then after 1 second turned off before printing.Step 2: Check the printed LED state
Afterled.off(),led.is_litis False, so output is 'LED state: False'.Final Answer:
LED state: False -> Option DQuick Check:
LED off means is_lit = False [OK]
- Assuming LED stays on after off()
- Confusing is_lit property value
- Expecting syntax error due to sleep
Identify the error in this code that tries to blink an LED on pin 5:
from gpiozero import LED from time import sleep led = LED(5) led.blink(on_time=0.5, off_time=0.5) sleep(2) led.off()
Solution
Step 1: Review the code for GPIO cleanup
The code blinks the LED and turns it off but does not release GPIO resources.Step 2: Identify missing cleanup step
Proper practice is to callled.close()to free GPIO pins after use.Final Answer:
Should callled.close()to clean GPIO -> Option BQuick Check:
Always close GPIO pins after use [OK]
- Thinking blink() needs on() first
- Assuming blink() requires times argument
- Ignoring GPIO cleanup after program
You want to create a program that blinks two LEDs on pins 17 and 27 alternately every 0.5 seconds for 5 seconds total. Which code snippet correctly implements this using the LED class?
from gpiozero import LED
from time import sleep
led1 = LED(17)
led2 = LED(27)
start = 0
while start < 5:
led1.on()
led2.off()
sleep(0.5)
led1.off()
led2.on()
sleep(0.5)
start += 1
led1.off()
led2.off()
led1.close()
led2.close()Solution
Step 1: Analyze the loop timing and LED control
The loop runs 5 times, each iteration takes 1 second (two 0.5s sleeps), total 5 seconds blinking alternately.Step 2: Check LED on/off sequence and cleanup
LED1 and LED2 turn on/off alternately with proper sleep delays, and GPIO pins are closed at the end.Final Answer:
This code blinks LEDs alternately for 5 seconds correctly -> Option CQuick Check:
Loop count x sleep = total blink time [OK]
- Miscounting total blink duration
- Forgetting to close GPIO pins
- Assuming blink() method is mandatory
Ready to prove it?
Pass the test and this pattern moves unknown
