A traffic light simulation helps us understand how traffic signals change colors to control cars and people safely.
Traffic light simulation in Raspberry Pi
import time import RPi.GPIO as GPIO # Setup GPIO pins GPIO.setmode(GPIO.BCM) RED = 17 YELLOW = 27 GREEN = 22 GPIO.setup(RED, GPIO.OUT) GPIO.setup(YELLOW, GPIO.OUT) GPIO.setup(GREEN, GPIO.OUT) # Function to turn off all lights def all_off(): GPIO.output(RED, False) GPIO.output(YELLOW, False) GPIO.output(GREEN, False)
Use GPIO.setmode(GPIO.BCM) to refer to pins by their Broadcom number.
Set each LED pin as output with GPIO.setup(pin, GPIO.OUT).
GPIO.output(RED, True) # Turn red light on GPIO.output(RED, False) # Turn red light off
time.sleep(3) # Wait for 3 seconds
all_off() # Turn all lights offThis program cycles through red, green, and yellow lights using LEDs connected to a Raspberry Pi. It prints which light is on and waits the right amount of time. Press Ctrl+C to stop.
import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) RED = 17 YELLOW = 27 GREEN = 22 GPIO.setup(RED, GPIO.OUT) GPIO.setup(YELLOW, GPIO.OUT) GPIO.setup(GREEN, GPIO.OUT) def all_off(): GPIO.output(RED, False) GPIO.output(YELLOW, False) GPIO.output(GREEN, False) try: while True: # Red light on all_off() GPIO.output(RED, True) print("Red light ON") time.sleep(5) # Green light on all_off() GPIO.output(GREEN, True) print("Green light ON") time.sleep(5) # Yellow light on all_off() GPIO.output(YELLOW, True) print("Yellow light ON") time.sleep(2) except KeyboardInterrupt: print("Program stopped") all_off() GPIO.cleanup()
Make sure your LEDs are connected with proper resistors to avoid damage.
Use GPIO.cleanup() to reset pins when the program ends.
Press Ctrl+C in the terminal to stop the program safely.
Traffic light simulation uses LEDs and timing to mimic real traffic signals.
GPIO pins control the lights by turning them on and off.
Use loops and delays to cycle through the colors in order.
Practice
Solution
Step 1: Understand GPIO pin function
GPIO pins on Raspberry Pi are used to send signals to external devices like LEDs.Step 2: Connect GPIO pins to LEDs
In traffic light simulation, GPIO pins turn LEDs on or off to show red, yellow, or green lights.Final Answer:
To control the LEDs turning on and off -> Option AQuick Check:
GPIO pins control LEDs = A [OK]
- Thinking GPIO speeds up the CPU
- Confusing GPIO with internet connection
- Assuming GPIO stores data
Solution
Step 1: Identify correct GPIO setup function
GPIO.setup(pin_number, mode) is used to set pin mode; mode can be GPIO.OUT or GPIO.IN.Step 2: Choose correct mode for LED output
LEDs need output mode, so GPIO.OUT is correct for pin 17.Final Answer:
GPIO.setup(17, GPIO.OUT) -> Option BQuick Check:
Setup pin as output = B [OK]
- Using GPIO.output instead of GPIO.setup to set mode
- Setting pin as GPIO.IN instead of GPIO.OUT
- Confusing setup and output functions
GPIO.output(18, GPIO.HIGH) time.sleep(3) GPIO.output(18, GPIO.LOW)
Solution
Step 1: Analyze GPIO.output commands
GPIO.HIGH turns the LED on; GPIO.LOW turns it off.Step 2: Understand time.sleep effect
time.sleep(3) pauses the program for 3 seconds while LED stays on.Final Answer:
The LED on pin 18 turns on for 3 seconds, then turns off -> Option DQuick Check:
HIGH then sleep then LOW = C [OK]
- Thinking LED blinks rapidly without loop
- Assuming syntax error due to time.sleep
- Confusing HIGH with LOW states
GPIO.setup(22, GPIO.OUT) GPIO.output(22, HIGH) time.sleep(2) GPIO.output(22, LOW)
Solution
Step 1: Check usage of HIGH and LOW constants
HIGH and LOW must be written as GPIO.HIGH and GPIO.LOW to be recognized.Step 2: Verify other code parts
GPIO.setup with GPIO.OUT is correct; time.sleep works fine; pin 22 is valid.Final Answer:
HIGH and LOW should be prefixed with GPIO. -> Option AQuick Check:
HIGH/LOW require GPIO. prefix = D [OK]
- Omitting GPIO. prefix for HIGH/LOW
- Changing pin mode incorrectly
- Thinking time.sleep causes error
Solution
Step 1: Check order and timing of lights
Traffic lights cycle red (2s), yellow (1s), green (3s) in that order repeatedly.Step 2: Verify code matches timing and order
while True: GPIO.output(5, GPIO.HIGH) time.sleep(2) GPIO.output(5, GPIO.LOW) GPIO.output(6, GPIO.HIGH) time.sleep(1) GPIO.output(6, GPIO.LOW) GPIO.output(13, GPIO.HIGH) time.sleep(3) GPIO.output(13, GPIO.LOW) uses while True loop, turns on red (pin 5) for 2s, then yellow (pin 6) for 1s, then green (pin 13) for 3s, turning off each after delay.Final Answer:
while True loop with red (2s), yellow (1s), green (3s) -> Option CQuick Check:
Correct order and timing in loop = A [OK]
- Wrong order of lights
- Using for loop without timing per light
- Turning all LEDs on at once
Ready to prove it?
Pass the test and this pattern moves unknown
