Bird
Raised Fist0
Raspberry Piprogramming~20 mins

Traffic light simulation in Raspberry Pi - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Traffic Light Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of a simple traffic light sequence
What will be the output of this Raspberry Pi traffic light simulation code snippet?
Raspberry Pi
import time

lights = ['Red', 'Green', 'Yellow']
for light in lights:
    print(f"Light is {light}")
    time.sleep(1)
A
Light is Red
Light is Green
Light is Yellow
B
Light is Red
Light is Yellow
Light is Green
C
Light is Green
Light is Yellow
Light is Red
D
Light is Yellow
Light is Green
Light is Red
Attempts:
2 left
💡 Hint
Look at the order of the lights in the list and how the loop prints them.
🧠 Conceptual
intermediate
1:30remaining
Understanding GPIO pin setup for traffic lights
Which statement correctly describes the purpose of setting GPIO pins as outputs in a Raspberry Pi traffic light program?
ATo read the current state of the traffic light buttons
BTo send signals to turn the LEDs on or off
CTo power the Raspberry Pi board
DTo connect the Raspberry Pi to the internet
Attempts:
2 left
💡 Hint
Think about what output pins do in controlling LEDs.
🔧 Debug
advanced
2:30remaining
Identify the error in this traffic light timing code
What error will this Raspberry Pi traffic light code produce when run?
Raspberry Pi
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)

try:
    while True:
        GPIO.output(17, True)
        time.sleep(2)
        GPIO.output(17, False)
        time.sleep('2')
finally:
    GPIO.cleanup()
ANo error, the code runs correctly
BSyntaxError due to missing colon after while True
CRuntimeError because GPIO pin 17 is not set as output
DTypeError because time.sleep() received a string instead of a number
Attempts:
2 left
💡 Hint
Check the argument types passed to time.sleep.
📝 Syntax
advanced
2:00remaining
Correct syntax for turning on multiple LEDs
Which option correctly turns on GPIO pins 17, 27, and 22 to simulate a traffic light?
AGPIO.output([17, 27, 22], True)
BGPIO.output({17, 27, 22}, True)
CGPIO.output(17, True); GPIO.output(27, True); GPIO.output(22, True)
DGPIO.output(17 and 27 and 22, True)
Attempts:
2 left
💡 Hint
Check how GPIO.output accepts pin numbers.
🚀 Application
expert
3:00remaining
Calculate total cycle time of traffic light simulation
Given this traffic light timing code, what is the total time in seconds for one full cycle?
Raspberry Pi
import time

sequence = [
    ('Red', 5),
    ('Green', 3),
    ('Yellow', 2)
]

def run_cycle():
    for color, duration in sequence:
        print(f"Light: {color}")
        time.sleep(duration)

run_cycle()
A15 seconds
B5 seconds
C10 seconds
D20 seconds
Attempts:
2 left
💡 Hint
Add the durations for all colors in the sequence.

Practice

(1/5)
1. What is the main purpose of using GPIO pins in a Raspberry Pi traffic light simulation?
easy
A. To control the LEDs turning on and off
B. To increase the Raspberry Pi processing speed
C. To connect the Raspberry Pi to the internet
D. To store the traffic light timing data

Solution

  1. Step 1: Understand GPIO pin function

    GPIO pins on Raspberry Pi are used to send signals to external devices like LEDs.
  2. 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.
  3. Final Answer:

    To control the LEDs turning on and off -> Option A
  4. Quick Check:

    GPIO pins control LEDs = A [OK]
Hint: GPIO pins control hardware like LEDs in simulations [OK]
Common Mistakes:
  • Thinking GPIO speeds up the CPU
  • Confusing GPIO with internet connection
  • Assuming GPIO stores data
2. Which of the following Python code snippets correctly sets up GPIO pin 17 as an output for the traffic light LED?
easy
A. GPIO.output(17, GPIO.IN)
B. GPIO.setup(17, GPIO.OUT)
C. GPIO.setup(17, GPIO.IN)
D. GPIO.output(17, GPIO.OUT)

Solution

  1. 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.
  2. Step 2: Choose correct mode for LED output

    LEDs need output mode, so GPIO.OUT is correct for pin 17.
  3. Final Answer:

    GPIO.setup(17, GPIO.OUT) -> Option B
  4. Quick Check:

    Setup pin as output = B [OK]
Hint: Use GPIO.setup(pin, GPIO.OUT) to set output pins [OK]
Common Mistakes:
  • Using GPIO.output instead of GPIO.setup to set mode
  • Setting pin as GPIO.IN instead of GPIO.OUT
  • Confusing setup and output functions
3. What will be the output behavior of this Python code snippet controlling a traffic light LED on GPIO 18?
GPIO.output(18, GPIO.HIGH)
time.sleep(3)
GPIO.output(18, GPIO.LOW)
medium
A. The LED on pin 18 stays off permanently
B. The LED on pin 18 blinks rapidly for 3 seconds
C. The program will cause a syntax error
D. The LED on pin 18 turns on for 3 seconds, then turns off

Solution

  1. Step 1: Analyze GPIO.output commands

    GPIO.HIGH turns the LED on; GPIO.LOW turns it off.
  2. Step 2: Understand time.sleep effect

    time.sleep(3) pauses the program for 3 seconds while LED stays on.
  3. Final Answer:

    The LED on pin 18 turns on for 3 seconds, then turns off -> Option D
  4. Quick Check:

    HIGH then sleep then LOW = C [OK]
Hint: HIGH turns LED on, LOW turns it off; sleep pauses timing [OK]
Common Mistakes:
  • Thinking LED blinks rapidly without loop
  • Assuming syntax error due to time.sleep
  • Confusing HIGH with LOW states
4. Identify the error in this traffic light simulation code snippet:
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, HIGH)
time.sleep(2)
GPIO.output(22, LOW)
medium
A. HIGH and LOW should be prefixed with GPIO.
B. GPIO.setup should use GPIO.IN instead of GPIO.OUT
C. time.sleep cannot be used with GPIO.output
D. Pin 22 cannot be used for output

Solution

  1. Step 1: Check usage of HIGH and LOW constants

    HIGH and LOW must be written as GPIO.HIGH and GPIO.LOW to be recognized.
  2. Step 2: Verify other code parts

    GPIO.setup with GPIO.OUT is correct; time.sleep works fine; pin 22 is valid.
  3. Final Answer:

    HIGH and LOW should be prefixed with GPIO. -> Option A
  4. Quick Check:

    HIGH/LOW require GPIO. prefix = D [OK]
Hint: Always prefix HIGH/LOW with GPIO. to avoid NameError [OK]
Common Mistakes:
  • Omitting GPIO. prefix for HIGH/LOW
  • Changing pin mode incorrectly
  • Thinking time.sleep causes error
5. You want to simulate a traffic light cycle with red, yellow, and green LEDs connected to GPIO pins 5, 6, and 13 respectively. Which Python code snippet correctly cycles through the lights with 2 seconds red, 1 second yellow, and 3 seconds green, repeating forever?
hard
A. GPIO.output(5, GPIO.HIGH) GPIO.output(6, GPIO.HIGH) GPIO.output(13, GPIO.HIGH) time.sleep(6) GPIO.output(5, GPIO.LOW) GPIO.output(6, GPIO.LOW) GPIO.output(13, GPIO.LOW)
B. for light in [5,6,13]: GPIO.output(light, GPIO.HIGH) time.sleep(2) GPIO.output(light, GPIO.LOW)
C. 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)
D. while True: GPIO.output(13, GPIO.HIGH) time.sleep(3) GPIO.output(13, GPIO.LOW) GPIO.output(6, GPIO.HIGH) time.sleep(1) GPIO.output(6, GPIO.LOW) GPIO.output(5, GPIO.HIGH) time.sleep(2) GPIO.output(5, GPIO.LOW)

Solution

  1. Step 1: Check order and timing of lights

    Traffic lights cycle red (2s), yellow (1s), green (3s) in that order repeatedly.
  2. 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.
  3. Final Answer:

    while True loop with red (2s), yellow (1s), green (3s) -> Option C
  4. Quick Check:

    Correct order and timing in loop = A [OK]
Hint: Use while True and sequence GPIO.output with time.sleep [OK]
Common Mistakes:
  • Wrong order of lights
  • Using for loop without timing per light
  • Turning all LEDs on at once
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard