Bird
Raised Fist0
Raspberry Piprogramming~10 mins

LED brightness control in Raspberry Pi - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the PWM class from the gpiozero library.

Raspberry Pi
from gpiozero import [1]
Drag options to blanks, or click blank then click option'
APWMLED
BLED
CButton
DOutputDevice
Attempts:
3 left
💡 Hint
Common Mistakes
Importing 'LED' instead of 'PWMLED' which only supports on/off control.
2fill in blank
medium

Complete the code to create a PWMLED object on GPIO pin 18.

Raspberry Pi
led = PWMLED([1])
Drag options to blanks, or click blank then click option'
A17
B18
C22
D23
Attempts:
3 left
💡 Hint
Common Mistakes
Using a pin that does not support PWM or is not connected to the LED.
3fill in blank
hard

Fix the error in setting the LED brightness to 50%.

Raspberry Pi
led.value = [1]
Drag options to blanks, or click blank then click option'
A50
B1
C0.5
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using integer 50 instead of decimal 0.5 causes the LED to stay fully on or off.
4fill in blank
hard

Fill both blanks to create a dictionary that maps brightness levels to LED values for 0%, 50%, and 100%.

Raspberry Pi
brightness_levels = {0: [1], 50: [2], 100: 1.0}
Drag options to blanks, or click blank then click option'
A0.0
B0.5
C1
D50
Attempts:
3 left
💡 Hint
Common Mistakes
Using integer percentages instead of decimal values for LED brightness.
5fill in blank
hard

Fill all three blanks to set the LED brightness to 75% using the dictionary and print the value.

Raspberry Pi
level = 75
led.value = brightness_levels.get([1], [2])
print(f"LED brightness set to [3]")
Drag options to blanks, or click blank then click option'
Alevel
B0.75
D75%
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong key or default value causes the LED to not set correctly.

Practice

(1/5)
1. What does PWM stand for in the context of controlling LED brightness on a Raspberry Pi?
easy
A. Pulse Wire Mode
B. Power Wave Management
C. Pin Wiring Method
D. Pulse Width Modulation

Solution

  1. Step 1: Understand PWM meaning

    PWM is a technique used to control power by switching it on and off quickly.
  2. Step 2: Match PWM to full form

    Pulse Width Modulation means changing the width of the pulse to control power, which fits LED brightness control.
  3. Final Answer:

    Pulse Width Modulation -> Option D
  4. Quick Check:

    PWM = Pulse Width Modulation [OK]
Hint: PWM controls brightness by changing pulse width [OK]
Common Mistakes:
  • Confusing PWM with power management
  • Thinking PWM is a wiring method
  • Mixing up acronyms
2. Which of the following is the correct way to start PWM on GPIO pin 18 with a frequency of 1000 Hz using RPi.GPIO?
easy
A. pwm = GPIO.PWM(18, 1000); pwm.start(0)
B. pwm = GPIO.PWM(18); pwm.start(1000)
C. pwm = GPIO.PWM(1000, 18); pwm.start(0)
D. pwm = GPIO.PWM(18, 0); pwm.start(1000)

Solution

  1. Step 1: Check PWM constructor parameters

    RPi.GPIO PWM takes pin number first, then frequency in Hz.
  2. Step 2: Verify start method usage

    start() takes initial duty cycle (0-100), so start(0) is correct for off initially.
  3. Final Answer:

    pwm = GPIO.PWM(18, 1000); pwm.start(0) -> Option A
  4. Quick Check:

    GPIO.PWM(pin, freq) then start(duty) [OK]
Hint: PWM(pin, frequency) then start(duty cycle) [OK]
Common Mistakes:
  • Swapping frequency and pin
  • Starting PWM with frequency instead of duty
  • Using zero frequency
3. What will be the output brightness level of the LED after running this code snippet?
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 500)
pwm.start(0)
pwm.ChangeDutyCycle(75)
medium
A. LED will be at 25% brightness
B. LED will be off
C. LED will be at 75% brightness
D. Code will cause an error

Solution

  1. Step 1: Understand duty cycle effect

    Duty cycle 75 means LED receives power 75% of the time, so brightness is 75%.
  2. Step 2: Check code correctness

    Code sets up PWM on pin 18 at 500 Hz, starts at 0, then changes duty cycle to 75 correctly.
  3. Final Answer:

    LED will be at 75% brightness -> Option C
  4. Quick Check:

    ChangeDutyCycle(75) = 75% brightness [OK]
Hint: Duty cycle % equals brightness % [OK]
Common Mistakes:
  • Confusing duty cycle with frequency
  • Thinking 0 means full brightness
  • Forgetting to start PWM before changing duty
4. Identify the error in this code that controls LED brightness and fix it:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)
pwm.ChangeDutyCycle(50)
pwm.start(50)
GPIO.cleanup()
medium
A. Frequency 1000 is too high, use 100
B. ChangeDutyCycle called before start; swap their order
C. GPIO.cleanup() should be before pwm.start()
D. Missing GPIO.setwarnings(False)

Solution

  1. Step 1: Check PWM start and ChangeDutyCycle order

    ChangeDutyCycle must be called after pwm.start(), not before.
  2. Step 2: Correct the order

    Swap lines so pwm.start(50) comes before pwm.ChangeDutyCycle(50).
  3. Final Answer:

    ChangeDutyCycle called before start; swap their order -> Option B
  4. Quick Check:

    start() must come before ChangeDutyCycle() [OK]
Hint: Always start PWM before changing duty cycle [OK]
Common Mistakes:
  • Calling ChangeDutyCycle before start
  • Cleaning up GPIO too early
  • Incorrect frequency assumptions
5. You want to smoothly increase LED brightness from 0% to 100% over 5 seconds using PWM on pin 18. Which code snippet correctly implements this?
hard
A. import time for dc in range(0, 101): pwm.ChangeDutyCycle(dc) time.sleep(0.05)
B. import time for dc in range(0, 101, 10): pwm.ChangeDutyCycle(dc) time.sleep(0.5)
C. import time for dc in range(0, 101, 20): pwm.ChangeDutyCycle(dc) time.sleep(1)
D. import time for dc in range(0, 51): pwm.ChangeDutyCycle(dc*2) time.sleep(0.1)

Solution

  1. Step 1: Calculate total steps and delay

    To increase from 0 to 100 in 5 seconds smoothly, small steps with short delay are needed.
  2. Step 2: Analyze each option timing

    import time for dc in range(0, 101): pwm.ChangeDutyCycle(dc) time.sleep(0.05) uses 101 steps with 0.05s delay = 5.05s total, smooth increase.
  3. Final Answer:

    import time for dc in range(0, 101): pwm.ChangeDutyCycle(dc) time.sleep(0.05) -> Option A
  4. Quick Check:

    101 steps * 0.05s = ~5 seconds smooth ramp [OK]
Hint: Use small steps with short delay for smooth brightness [OK]
Common Mistakes:
  • Using too few steps causing jumps
  • Incorrect total time calculation
  • Multiplying duty cycle incorrectly
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