Bird
Raised Fist0
Raspberry Piprogramming~10 mins

PWMLED for brightness in Raspberry Pi - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - PWMLED for brightness
Start
↓
Set PWMLED pin
↓
Set brightness value (0.0 to 1.0)
↓
PWM signal adjusts LED brightness
↓
LED glows with set brightness
↓
End or change brightness
This flow shows how setting a brightness value changes the LED brightness using PWM signals.
Execution Sample
Raspberry Pi
from gpiozero import PWMLED
led = PWMLED(17)
led.value = 0.5  # half brightness
This code sets up a PWM LED on pin 17 and sets its brightness to half.
Execution Table
StepActionPWMLED.valueLED Brightness LevelNotes
1Create PWMLED on pin 170.0OffLED starts off by default
2Set led.value = 0.50.5Medium brightnessLED glows at half brightness
3Set led.value = 1.01.0Full brightnessLED glows fully bright
4Set led.value = 0.00.0OffLED turns off
5Set led.value = 0.750.75BrightLED glows bright but not full
6End0.75BrightProgram ends, LED stays at last brightness
💡 Program ends after setting brightness; LED stays at last set brightness.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5Final
led.value0.00.51.00.00.750.75
LED BrightnessOffMediumFullOffBrightBright
Key Moments - 3 Insights
Why does led.value accept numbers between 0.0 and 1.0?
Because led.value controls the brightness as a fraction of full power, where 0.0 means off and 1.0 means fully on, as shown in steps 2 to 5 in the execution_table.
What happens if you set led.value to a number greater than 1 or less than 0?
The PWMLED class expects values only between 0.0 and 1.0; values outside this range may cause errors or unexpected behavior, so always keep values within this range as shown in the execution_table.
Does the LED turn off immediately when led.value is set to 0?
Yes, setting led.value to 0 turns the LED off immediately, as seen in step 4 of the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the LED brightness level after step 3?
AOff
BMedium brightness
CFull brightness
DBright but not full
💡 Hint
Check the 'LED Brightness Level' column at step 3 in the execution_table.
At which step does the LED turn off?
AStep 4
BStep 2
CStep 5
DStep 3
💡 Hint
Look for 'Off' in the 'LED Brightness Level' column in the execution_table.
If led.value is set to 0.25 instead of 0.5 at step 2, how would the LED brightness change?
ALED brightness would be full
BLED brightness would be dimmer than medium
CLED brightness would be off
DLED brightness would be brighter than full
💡 Hint
Compare the brightness levels for different led.value settings in the variable_tracker.
Concept Snapshot
PWMLED controls LED brightness by setting led.value between 0.0 (off) and 1.0 (full brightness).
Changing led.value adjusts the pulse width modulation signal to vary brightness smoothly.
Use led.value = x where x is a float from 0.0 to 1.0.
Setting led.value to 0 turns LED off immediately.
Values outside 0.0-1.0 are invalid and should be avoided.
Full Transcript
This lesson shows how to control LED brightness on a Raspberry Pi using PWMLED from gpiozero. We start by creating a PWMLED object on a pin, then set its value between 0.0 and 1.0 to adjust brightness. The execution table traces steps where brightness changes from off to medium, full, off again, and bright. The variable tracker shows how led.value and LED brightness change step by step. Key moments clarify why values must be between 0.0 and 1.0 and what happens when setting led.value to 0. The quiz tests understanding of brightness levels at different steps and effects of changing led.value. The snapshot summarizes the main points for quick reference.

Practice

(1/5)
1. What does the PWMLED class control on a Raspberry Pi?
easy
A. The speed of the Raspberry Pi fan
B. The color of an LED by mixing red, green, and blue lights
C. The temperature of the Raspberry Pi CPU
D. The brightness of an LED by changing how long it is on and off quickly

Solution

  1. Step 1: Understand PWMLED purpose

    PWMLED is used to control LED brightness by adjusting the time it stays on and off rapidly.
  2. Step 2: Compare options

    Only The brightness of an LED by changing how long it is on and off quickly describes brightness control using on/off timing, which matches PWMLED's function.
  3. Final Answer:

    The brightness of an LED by changing how long it is on and off quickly -> Option D
  4. Quick Check:

    PWMLED controls brightness = A [OK]
Hint: PWM means brightness by fast on/off timing [OK]
Common Mistakes:
  • Confusing brightness with color control
  • Thinking PWMLED controls temperature or fan speed
2. Which of the following is the correct way to set the brightness of a PWMLED named led to half brightness?
easy
A. led.set_brightness = 0.5
B. led.brightness(0.5)
C. led.brightness = 0.5
D. led.brightness = 50

Solution

  1. Step 1: Recall PWMLED brightness syntax

    Brightness is set by assigning a float between 0 and 1 to the brightness attribute.
  2. Step 2: Check each option

    led.brightness = 0.5 uses correct attribute assignment with 0.5 (half brightness). Others use wrong syntax or wrong value type.
  3. Final Answer:

    led.brightness = 0.5 -> Option C
  4. Quick Check:

    Set brightness by attribute = C [OK]
Hint: Use led.brightness = value between 0 and 1 [OK]
Common Mistakes:
  • Calling brightness like a function
  • Using integer 50 instead of 0.5
  • Trying to assign to a method
3. What will be the output behavior of this code snippet?
from gpiozero import PWMLED
import time
led = PWMLED(17)
led.brightness = 0.2
time.sleep(2)
led.brightness = 0.8
time.sleep(2)
led.off()
medium
A. LED glows dimly for 2 seconds, then brightly for 2 seconds, then turns off
B. LED glows brightly for 2 seconds, then dimly for 2 seconds, then turns off
C. LED stays off the whole time
D. Code causes an error because brightness is set incorrectly

Solution

  1. Step 1: Analyze brightness settings

    First brightness is 0.2 (dim), then after 2 seconds it changes to 0.8 (bright).
  2. Step 2: Understand timing and off command

    Each brightness level lasts 2 seconds, then LED is turned off.
  3. Final Answer:

    LED glows dimly for 2 seconds, then brightly for 2 seconds, then turns off -> Option A
  4. Quick Check:

    Brightness changes 0.2 to 0.8 then off = A [OK]
Hint: Brightness values control glow level over time [OK]
Common Mistakes:
  • Mixing order of brightness values
  • Thinking brightness values cause errors
  • Assuming LED stays on after off()
4. Identify the error in this code that tries to set LED brightness:
from gpiozero import PWMLED
led = PWMLED(18)
led.brightness(0.7)
medium
A. Using parentheses after brightness instead of assignment
B. Wrong pin number for PWMLED
C. Missing import for time module
D. PWMLED does not support brightness control

Solution

  1. Step 1: Check how brightness is set

    Brightness is an attribute, so it should be assigned a value, not called like a function.
  2. Step 2: Verify other options

    Pin 18 is valid, time module is not needed here, and PWMLED supports brightness.
  3. Final Answer:

    Using parentheses after brightness instead of assignment -> Option A
  4. Quick Check:

    brightness is attribute, not method = D [OK]
Hint: Set brightness with =, not parentheses [OK]
Common Mistakes:
  • Calling brightness like a function
  • Assuming pin number causes error
  • Thinking time import is required here
5. You want to smoothly increase an LED's brightness from off to full over 5 seconds using PWMLED. Which code snippet correctly achieves this?
hard
A.
from gpiozero import PWMLED
import time
led = PWMLED(21)
for i in range(5):
    led.brightness = i
    time.sleep(1)
led.off()
B.
from gpiozero import PWMLED
import time
led = PWMLED(21)
for i in range(6):
    led.brightness = i / 5
    time.sleep(1)
led.off()
C.
from gpiozero import PWMLED
import time
led = PWMLED(21)
for i in range(0, 1, 0.2):
    led.brightness = i
    time.sleep(1)
led.off()
D.
from gpiozero import PWMLED
import time
led = PWMLED(21)
for i in range(5):
    led.brightness = 1 - i / 5
    time.sleep(1)
led.off()

Solution

  1. Step 1: Understand brightness range and timing

    Brightness must go from 0 to 1 in steps over 5 seconds, so dividing i by 5 in 6 steps (0 to 5) works.
  2. Step 2: Check each code snippet

    from gpiozero import PWMLED
    import time
    led = PWMLED(21)
    for i in range(6):
        led.brightness = i / 5
        time.sleep(1)
    led.off()
    correctly uses i/5 for brightness from 0 to 1 in 1-second steps.
    from gpiozero import PWMLED
    import time
    led = PWMLED(21)
    for i in range(5):
        led.brightness = i
        time.sleep(1)
    led.off()
    sets brightness to integers >1 (invalid).
    from gpiozero import PWMLED
    import time
    led = PWMLED(21)
    for i in range(0, 1, 0.2):
        led.brightness = i
        time.sleep(1)
    led.off()
    uses range with float step (invalid syntax).
    from gpiozero import PWMLED
    import time
    led = PWMLED(21)
    for i in range(5):
        led.brightness = 1 - i / 5
        time.sleep(1)
    led.off()
    decreases brightness instead of increasing.
  3. Final Answer:

    Code that increases brightness smoothly from 0 to 1 over 5 seconds using i/5 steps -> Option B
  4. Quick Check:

    Brightness from 0 to 1 in steps = B [OK]
Hint: Divide loop index by max steps for smooth brightness [OK]
Common Mistakes:
  • Using integer brightness values >1
  • Trying to use float step in range (not allowed)
  • Decreasing brightness instead of increasing
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