Bird
Raised Fist0
Raspberry Piprogramming~20 mins

Why PWM is needed for analog-like control in Raspberry Pi - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PWM Mastery on Raspberry Pi
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Why use PWM for analog-like control on Raspberry Pi?

On a Raspberry Pi, why is Pulse Width Modulation (PWM) used to simulate analog output instead of directly outputting a varying voltage?

ABecause Raspberry Pi GPIO pins can only output digital signals (on/off), PWM creates an average voltage effect by switching rapidly.
BBecause Raspberry Pi GPIO pins can output true analog voltages, PWM is just a simpler alternative.
CBecause PWM reduces the power consumption of the Raspberry Pi by lowering voltage permanently.
DBecause PWM signals are easier to read by sensors than analog voltages.
Attempts:
2 left
💡 Hint

Think about what kind of signals Raspberry Pi pins can produce physically.

❓ Predict Output
intermediate
2:00remaining
PWM Duty Cycle Effect on LED Brightness

What will be the brightness effect on an LED connected to a Raspberry Pi GPIO pin when the PWM duty cycle is set to 75%?

Raspberry Pi
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)  # 1kHz frequency
pwm.start(0)

pwm.ChangeDutyCycle(75)
time.sleep(2)
pwm.stop()
GPIO.cleanup()
AThe LED will be off because 75% duty cycle is too high.
BThe LED will be bright, approximately 75% of full brightness.
CThe LED will blink on and off slowly at 75% intervals.
DThe LED will be at full brightness regardless of duty cycle.
Attempts:
2 left
💡 Hint

Duty cycle controls how long the LED is on during each cycle.

🔧 Debug
advanced
2:00remaining
Why does this PWM code not dim the LED?

Given this Raspberry Pi PWM code, why does the LED stay fully on instead of dimming?

Raspberry Pi
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)
pwm.start(100)

for dc in range(0, 101, 20):
    pwm.ChangeDutyCycle(dc)
    time.sleep(0.5)
pwm.stop()
GPIO.cleanup()
ABecause the GPIO pin was not set up as output, the PWM does not work.
BBecause the PWM was started at 100% duty cycle, the LED stays fully on and the ChangeDutyCycle calls have no effect.
CBecause the PWM was started at 100% duty cycle, the LED starts fully on and the loop changes duty cycle correctly, so the LED dims as expected.
DBecause the frequency is too high, the LED cannot dim.
Attempts:
2 left
💡 Hint

Check how the duty cycle changes inside the loop.

📝 Syntax
advanced
2:00remaining
Identify the syntax error in PWM setup code

Which option contains a syntax error in setting up PWM on Raspberry Pi?

Raspberry Pi
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)
pwm.start(50)
A
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)
pwm.start(50)
B
PIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)
pwm.start(50)
C
)05(trats.mwp
)0001 ,81(MWP.OIPG = mwp
)TUO.OIPG ,81(putes.OIPG
D
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18 1000)
pwm.start(50)
Attempts:
2 left
💡 Hint

Look for missing commas or parentheses.

🚀 Application
expert
2:00remaining
Calculate average voltage from PWM duty cycle

A Raspberry Pi GPIO pin outputs 3.3V when on. If PWM is set to 40% duty cycle, what is the average voltage the connected device experiences?

A1.32 volts
B0.40 volts
C1.98 volts
D3.30 volts
Attempts:
2 left
💡 Hint

Multiply the duty cycle percentage by the voltage when on.

Practice

(1/5)
1. Why do we use PWM (Pulse Width Modulation) on a Raspberry Pi to control devices like LEDs instead of just turning them fully on or off?
easy
A. Because PWM is the only way to turn devices on.
B. Because PWM makes the Raspberry Pi run faster.
C. Because PWM simulates different power levels by switching on and off quickly, making devices appear dimmer or brighter.
D. Because PWM uses less electricity than turning devices fully on.

Solution

  1. Step 1: Understand what PWM does

    PWM switches power on and off very fast to create the effect of different power levels.
  2. Step 2: Compare PWM to simple on/off

    Simple on/off only gives full power or no power, so devices can't appear dim or partially powered.
  3. Final Answer:

    Because PWM simulates different power levels by switching on and off quickly, making devices appear dimmer or brighter. -> Option C
  4. Quick Check:

    PWM simulates analog power = Because PWM simulates different power levels by switching on and off quickly, making devices appear dimmer or brighter. [OK]
Hint: PWM controls brightness by fast on/off switching [OK]
Common Mistakes:
  • Thinking PWM makes the Pi run faster
  • Believing PWM is only for turning devices fully on
  • Assuming PWM always saves electricity
2. Which of the following is the correct way to start PWM on a Raspberry Pi GPIO pin using the RPi.GPIO library?
easy
A. pwm = GPIO.PWM(pin, frequency); pwm.start(duty_cycle)
B. pwm = GPIO.startPWM(pin, duty_cycle); pwm.setFrequency(frequency)
C. pwm = GPIO.PWMStart(pin, frequency, duty_cycle)
D. pwm = GPIO.beginPWM(pin); pwm.setDutyCycle(frequency)

Solution

  1. Step 1: Recall RPi.GPIO PWM syntax

    The correct syntax is to create a PWM object with GPIO.PWM(pin, frequency) and then start it with pwm.start(duty_cycle).
  2. Step 2: Check each option's method names

    Only pwm = GPIO.PWM(pin, frequency); pwm.start(duty_cycle) uses the correct method names and order as per RPi.GPIO documentation.
  3. Final Answer:

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

    RPi.GPIO PWM start = pwm = GPIO.PWM(pin, frequency); pwm.start(duty_cycle) [OK]
Hint: Remember: PWM(pin, freq) then start(duty) [OK]
Common Mistakes:
  • Using incorrect method names like startPWM or beginPWM
  • Mixing frequency and duty cycle in wrong order
  • Trying to set frequency after starting PWM
3. What will be the visible effect on an LED connected to a Raspberry Pi GPIO pin if PWM is set with a frequency of 100 Hz and a duty cycle of 25%?
medium
A. The LED will be dim, about one quarter brightness.
B. The LED will be fully bright.
C. The LED will blink slowly once every second.
D. The LED will be fully off.

Solution

  1. Step 1: Understand duty cycle meaning

    A 25% duty cycle means the LED is on 25% of the time and off 75% of the time in each cycle.
  2. Step 2: Relate duty cycle to brightness

    Because the LED is on only a quarter of the time, it appears dimmer, roughly 25% brightness.
  3. Final Answer:

    The LED will be dim, about one quarter brightness. -> Option A
  4. Quick Check:

    25% duty cycle = dim LED = The LED will be dim, about one quarter brightness. [OK]
Hint: Duty cycle % roughly equals LED brightness % [OK]
Common Mistakes:
  • Thinking LED will be fully off at 25% duty cycle
  • Assuming LED blinks slowly instead of fast
  • Confusing frequency with brightness
4. You wrote this code to control an LED brightness with PWM on Raspberry Pi but the LED stays fully on:
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
pin = 18
GPIO.setup(pin, GPIO.OUT)
pwm = GPIO.PWM(pin, 100)
pwm.start(100)
What is the likely mistake?
medium
A. The pin number 18 is invalid for PWM.
B. The frequency 100 is too low for PWM to work.
C. You forgot to call GPIO.cleanup() before starting PWM.
D. The duty cycle is set to 100%, so the LED is always fully on.

Solution

  1. Step 1: Check the duty cycle value

    The code uses pwm.start(100), which means 100% duty cycle (always on).
  2. Step 2: Understand effect of 100% duty cycle

    At 100% duty cycle, the LED receives full power constantly, so it stays fully on.
  3. Final Answer:

    The duty cycle is set to 100%, so the LED is always fully on. -> Option D
  4. Quick Check:

    100% duty cycle = LED fully on = The duty cycle is set to 100%, so the LED is always fully on. [OK]
Hint: 100% duty cycle means always on [OK]
Common Mistakes:
  • Thinking frequency 100 is too low to work
  • Believing GPIO.cleanup() is needed before PWM start
  • Assuming pin 18 can't do PWM
5. You want to control a motor speed smoothly using PWM on Raspberry Pi. The motor needs a voltage between 0V (off) and 5V (full speed). Which PWM setup will best simulate this analog voltage control?
hard
A. Use a low frequency (e.g., 1 Hz) PWM with fixed 50% duty cycle.
B. Use a high frequency (e.g., 1 kHz) PWM with varying duty cycle from 0% to 100%.
C. Use a high frequency PWM with fixed 100% duty cycle.
D. Use a low frequency PWM with duty cycle always 0%.

Solution

  1. Step 1: Understand motor voltage control with PWM

    Varying the duty cycle changes the average voltage the motor receives, controlling speed smoothly.
  2. Step 2: Choose frequency and duty cycle range

    High frequency PWM (like 1 kHz) avoids motor jerks and noise; duty cycle must vary from 0% (off) to 100% (full speed).
  3. Final Answer:

    Use a high frequency (e.g., 1 kHz) PWM with varying duty cycle from 0% to 100%. -> Option B
  4. Quick Check:

    High freq + variable duty = smooth motor speed [OK]
Hint: High freq PWM + variable duty = smooth analog control [OK]
Common Mistakes:
  • Using low frequency causes jerky motor movement
  • Fixing duty cycle prevents speed control
  • Using 0% or 100% duty cycle only gives off or full speed
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