Bird
Raised Fist0
Raspberry Piprogramming~20 mins

RGB LED color mixing in Raspberry Pi - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
RGB LED Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this RGB LED color mixing code?

Consider this Python code controlling an RGB LED on a Raspberry Pi. What color will the LED show?

Raspberry Pi
red = 255
green = 100
blue = 0

if red > green and red > blue:
    color = 'Red'
elif green > red and green > blue:
    color = 'Green'
else:
    color = 'Blue'

print(color)
ARed
BGreen
CNo color
DBlue
Attempts:
2 left
💡 Hint

Check which color value is the highest number.

❓ Predict Output
intermediate
2:00remaining
What is the combined color output for these RGB values?

This code mixes RGB values to create a color. What is the printed output?

Raspberry Pi
def mix_color(r, g, b):
    return f'#{r:02X}{g:02X}{b:02X}'

color_code = mix_color(0, 128, 128)
print(color_code)
A#808000
B#800080
C#008080
D#000000
Attempts:
2 left
💡 Hint

Look at the hexadecimal format for green and blue values.

🔧 Debug
advanced
2:00remaining
Why does this RGB LED code cause an error?

Find the error in this Raspberry Pi RGB LED control code and identify the error type.

Raspberry Pi
red = 255
green = 255
blue = 255

color = {red, green, blue}
print(color)
ANameError
BSyntaxError
CTypeError
DIt prints a set of values
Attempts:
2 left
💡 Hint

Look at the curly braces and what they create in Python.

❓ Predict Output
advanced
2:00remaining
What is the output of this PWM brightness adjustment code?

This code adjusts brightness of an RGB LED using PWM values. What is printed?

Raspberry Pi
brightness = 0.5
red = int(255 * brightness)
green = int(100 * brightness)
blue = int(50 * brightness)

print(red, green, blue)
A127 50 25
B128 50 25
C127 49 25
D128 49 25
Attempts:
2 left
💡 Hint

Remember int() truncates decimals down.

🧠 Conceptual
expert
2:00remaining
Which option correctly describes additive color mixing for RGB LEDs?

When mixing colors with RGB LEDs, which statement is true?

AAdding green and blue light produces red light.
BAdding red and green light produces yellow light.
CAdding red and green light produces cyan light.
DAdding red and blue light produces green light.
Attempts:
2 left
💡 Hint

Think about how light colors combine, not paint.

Practice

(1/5)
1. What does PWM control when mixing colors on an RGB LED connected to a Raspberry Pi?
easy
A. The brightness of each red, green, and blue LED component
B. The voltage level of the Raspberry Pi power supply
C. The speed of the Raspberry Pi processor
D. The temperature of the LED

Solution

  1. Step 1: Understand PWM role in LEDs

    PWM (Pulse Width Modulation) changes how long the LED is on versus off, controlling brightness.
  2. Step 2: Apply PWM to RGB LED components

    Each color (red, green, blue) brightness is controlled separately by PWM signals.
  3. Final Answer:

    The brightness of each red, green, and blue LED component -> Option A
  4. Quick Check:

    PWM controls brightness = D [OK]
Hint: PWM changes LED brightness, not voltage or speed [OK]
Common Mistakes:
  • Confusing PWM with voltage control
  • Thinking PWM controls processor speed
  • Assuming PWM changes LED temperature
2. Which of the following is the correct way to start PWM on a Raspberry Pi GPIO pin using Python's RPi.GPIO library?
easy
A. pwm = GPIO.PWMStart(pin, frequency, duty_cycle)
B. pwm = GPIO.PWM(pin, frequency); pwm.start(duty_cycle)
C. pwm = GPIO.startPWM(pin, duty_cycle); pwm.frequency(frequency)
D. pwm = GPIO.PWM(pin); pwm.begin(frequency, duty_cycle)

Solution

  1. Step 1: Recall RPi.GPIO PWM syntax

    The correct syntax is to create a PWM object with GPIO.PWM(pin, frequency).
  2. Step 2: Start PWM with duty cycle

    Then call pwm.start(duty_cycle) to begin PWM signal.
  3. Final Answer:

    pwm = GPIO.PWM(pin, frequency); pwm.start(duty_cycle) -> Option B
  4. Quick Check:

    Correct PWM start syntax = C [OK]
Hint: Use GPIO.PWM(pin, freq) then start(duty) [OK]
Common Mistakes:
  • Using non-existent methods like PWMStart or startPWM
  • Calling start before creating PWM object
  • Mixing method names or parameters
3. Given this Python code controlling an RGB LED on Raspberry Pi:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
red = 17
green = 27
blue = 22
GPIO.setup(red, GPIO.OUT)
GPIO.setup(green, GPIO.OUT)
GPIO.setup(blue, GPIO.OUT)
pwm_red = GPIO.PWM(red, 1000)
pwm_green = GPIO.PWM(green, 1000)
pwm_blue = GPIO.PWM(blue, 1000)
pwm_red.start(100)
pwm_green.start(0)
pwm_blue.start(0)
What color will the RGB LED show?
medium
A. Bright green
B. White
C. Bright blue
D. Bright red

Solution

  1. Step 1: Analyze PWM duty cycles for each color

    Red PWM is started at 100% duty cycle (full brightness), green and blue at 0% (off).
  2. Step 2: Determine resulting LED color

    Only red LED is on fully, so the LED shows bright red color.
  3. Final Answer:

    Bright red -> Option D
  4. Quick Check:

    Red=100%, Green=0%, Blue=0% = Bright red [OK]
Hint: 100% duty cycle means full brightness for that color [OK]
Common Mistakes:
  • Assuming 0 means half brightness
  • Mixing pin numbers with colors
  • Thinking all LEDs light up by default
4. This code is intended to mix red and green colors on an RGB LED using Raspberry Pi PWM, but it does not work as expected:
pwm_red.start(50)
pwm_green.start(50)
pwm_blue.start(0)
GPIO.cleanup()
What is the main issue causing the LED to not show the mixed color?
medium
A. Calling GPIO.cleanup() immediately stops PWM signals
B. Duty cycle values must be 0 or 100 only
C. PWM frequency is not set before starting
D. Blue LED must be started with 50% duty cycle

Solution

  1. Step 1: Understand GPIO.cleanup() effect

    GPIO.cleanup() resets all GPIO pins, stopping PWM signals immediately.
  2. Step 2: Identify timing issue in code

    Calling cleanup right after starting PWM stops the LEDs before visible mixing.
  3. Final Answer:

    Calling GPIO.cleanup() immediately stops PWM signals -> Option A
  4. Quick Check:

    cleanup() stops PWM = A [OK]
Hint: Don't call GPIO.cleanup() before PWM runs [OK]
Common Mistakes:
  • Thinking duty cycle must be 0 or 100 only
  • Ignoring cleanup() effect on GPIO pins
  • Assuming frequency defaults to zero
5. You want to create a smooth color fade from red to blue on an RGB LED using Raspberry Pi PWM. Which approach correctly mixes colors to achieve this effect?
hard
A. Turn off green and blue, then blink red rapidly
B. Keep red at 100 and blue at 100 simultaneously for full brightness
C. Gradually decrease red duty cycle from 100 to 0 while increasing blue from 0 to 100
D. Set all colors to 50% duty cycle and keep constant

Solution

  1. Step 1: Understand color fading by PWM mixing

    Fading from red to blue means red brightness decreases while blue brightness increases smoothly.
  2. Step 2: Apply PWM duty cycle changes

    Decrease red duty cycle from 100% to 0%, increase blue from 0% to 100%, green stays off.
  3. Final Answer:

    Gradually decrease red duty cycle from 100 to 0 while increasing blue from 0 to 100 -> Option C
  4. Quick Check:

    Fade red down, blue up = A [OK]
Hint: Fade one color down, other up for smooth transition [OK]
Common Mistakes:
  • Turning both colors fully on causes white, not fade
  • Blinking one color doesn't create smooth fade
  • Keeping all colors constant prevents fading
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