Bird
Raised Fist0
Arduinoprogramming~5 mins

LED brightness control with PWM in Arduino - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does PWM stand for in LED brightness control?
PWM stands for Pulse Width Modulation. It is a technique to control the brightness of an LED by switching it on and off very fast.
Click to reveal answer
beginner
How does PWM control the brightness of an LED?
PWM controls brightness by changing the amount of time the LED is ON versus OFF in each cycle. More ON time means brighter LED.
Click to reveal answer
beginner
Which Arduino function is used to output PWM signals?
The Arduino function analogWrite(pin, value) is used to output PWM signals, where value ranges from 0 (off) to 255 (fully on).
Click to reveal answer
beginner
Why can't we use digitalWrite to control LED brightness smoothly?
digitalWrite only turns the LED fully ON or OFF. It cannot create the fast switching needed for smooth brightness control like PWM does.
Click to reveal answer
beginner
What is the range of values for the PWM duty cycle in Arduino's analogWrite?
The PWM duty cycle value ranges from 0 to 255, where 0 means LED is always OFF and 255 means LED is always ON.
Click to reveal answer
What does PWM do to control LED brightness?
ASwitches LED ON and OFF very fast with different ON times
BChanges LED color
CChanges LED size
DTurns LED ON permanently
Which Arduino function is used to create PWM signals?
AdigitalWrite()
BanalogWrite()
CpinMode()
Ddelay()
What is the maximum value you can use in analogWrite(pin, value) to make LED fully bright?
A1023
B100
C255
D500
Why is digitalWrite() not suitable for smooth LED brightness control?
AIt only turns LED fully ON or OFF
BIt changes LED color
CIt is slower than analogWrite
DIt uses too much power
If you want the LED to be half as bright using PWM, what approximate value should you use in analogWrite()?
A255
B0
C64
D128
Explain how PWM controls LED brightness in simple terms.
Think about how a light blinking fast can look dimmer or brighter.
You got /3 concepts.
    Describe how to use Arduino code to make an LED gradually get brighter using PWM.
    Imagine turning a knob slowly to make the light brighter.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does analogWrite(pin, 128) do to an LED connected to the specified pin?
      easy
      A. Sets the LED brightness to about half of its maximum brightness.
      B. Turns the LED fully off.
      C. Turns the LED fully on at maximum brightness.
      D. Causes the LED to blink on and off repeatedly.

      Solution

      1. Step 1: Understand PWM value range

        The analogWrite function accepts values from 0 (off) to 255 (full brightness).
      2. Step 2: Interpret the value 128

        128 is about half of 255, so the LED brightness will be about half of maximum.
      3. Final Answer:

        Sets the LED brightness to about half of its maximum brightness. -> Option A
      4. Quick Check:

        PWM value 128 = half brightness [OK]
      Hint: Remember 0=off, 255=full brightness, 128=half brightness [OK]
      Common Mistakes:
      • Thinking 128 turns LED off
      • Confusing analogWrite with digitalWrite
      • Assuming 128 means blinking
      2. Which of the following is the correct syntax to set PWM brightness on pin 9 to maximum in Arduino?
      easy
      A. analogWrite(255, 9);
      B. digitalWrite(9, 255);
      C. analogWrite(9, 255);
      D. analogRead(9, 255);

      Solution

      1. Step 1: Recall analogWrite syntax

        The correct syntax is analogWrite(pin, value) where pin is the pin number and value is 0-255.
      2. Step 2: Check each option

        analogWrite(9, 255); uses analogWrite(9, 255); which is correct. Others have wrong function names or argument order.
      3. Final Answer:

        analogWrite(9, 255); -> Option C
      4. Quick Check:

        Correct function and argument order = analogWrite(9, 255); [OK]
      Hint: analogWrite(pin, value) sets PWM; pin first, value second [OK]
      Common Mistakes:
      • Swapping pin and value arguments
      • Using digitalWrite instead of analogWrite
      • Using analogRead instead of analogWrite
      3. What will be the effect of this Arduino code snippet on an LED connected to pin 6?
      for (int brightness = 0; brightness <= 255; brightness += 51) {
        analogWrite(6, brightness);
        delay(100);
      }
      medium
      A. The LED will stay at full brightness without change.
      B. The LED will blink on and off 5 times quickly.
      C. The code will cause a compile error due to wrong syntax.
      D. The LED brightness will increase in 5 steps from off to full brightness.

      Solution

      1. Step 1: Analyze the for loop increments

        The loop variable brightness starts at 0 and increases by 51 until it reaches 255, so values are 0, 51, 102, 153, 204, 255 (6 values, 5 steps).
      2. Step 2: Understand analogWrite effect

        Each loop sets LED brightness to the current value, increasing brightness in steps with 100ms delay.
      3. Final Answer:

        The LED brightness will increase in 5 steps from off to full brightness. -> Option D
      4. Quick Check:

        Brightness steps with delay = gradual brightness increase [OK]
      Hint: Loop increments PWM value to fade LED brightness up [OK]
      Common Mistakes:
      • Counting 6 steps instead of 5 increments
      • Thinking LED blinks on/off instead of fading
      • Assuming syntax error due to loop
      4. Identify the error in this Arduino code that tries to fade an LED on pin 10:
      for (int i = 0; i < 256; i++) {
        analogWrite(10, i);
        delay(50);
      }
      analogWrite(10, 256);
      medium
      A. The for loop should use <= 256 instead of < 256.
      B. The value 256 is invalid for analogWrite; max is 255.
      C. Pin 10 cannot be used with analogWrite on Arduino.
      D. delay() cannot be used inside a for loop.

      Solution

      1. Step 1: Check analogWrite value limits

        analogWrite accepts values from 0 to 255. Using 256 is out of range and invalid.
      2. Step 2: Verify other code parts

        The for loop correctly uses i from 0 to 255. Pin 10 supports PWM on most Arduino boards. delay() is allowed inside loops.
      3. Final Answer:

        The value 256 is invalid for analogWrite; max is 255. -> Option B
      4. Quick Check:

        analogWrite max value = 255, 256 causes error [OK]
      Hint: PWM values max at 255; never use 256 [OK]
      Common Mistakes:
      • Using values above 255 for analogWrite
      • Thinking delay() is not allowed in loops
      • Assuming pin 10 can't do PWM
      5. You want to create a smooth breathing LED effect using PWM on pin 3. Which code snippet correctly achieves this effect?
      hard
      A. for (int b = 0; b <= 255; b++) { analogWrite(3, b); delay(10); } for (int b = 255; b >= 0; b--) { analogWrite(3, b); delay(10); }
      B. analogWrite(3, 255); delay(1000); analogWrite(3, 0); delay(1000);
      C. for (int b = 0; b < 256; b += 50) { analogWrite(3, b); delay(100); }
      D. digitalWrite(3, HIGH); delay(500); digitalWrite(3, LOW); delay(500);

      Solution

      1. Step 1: Understand breathing LED effect

        A breathing effect smoothly increases brightness from 0 to max, then back down to 0 repeatedly.
      2. Step 2: Analyze each option

        for (int b = 0; b <= 255; b++) { analogWrite(3, b); delay(10); } for (int b = 255; b >= 0; b--) { analogWrite(3, b); delay(10); } uses two loops: one increasing PWM from 0 to 255, then decreasing back to 0 with small delays for smoothness. analogWrite(3, 255); delay(1000); analogWrite(3, 0); delay(1000); just turns LED fully on and off abruptly. for (int b = 0; b < 256; b += 50) { analogWrite(3, b); delay(100); } increases brightness in large steps, not smooth. digitalWrite(3, HIGH); delay(500); digitalWrite(3, LOW); delay(500); uses digitalWrite, which only turns LED fully on or off.
      3. Final Answer:

        for (int b = 0; b <= 255; b++) { analogWrite(3, b); delay(10); } for (int b = 255; b >= 0; b--) { analogWrite(3, b); delay(10); } -> Option A
      4. Quick Check:

        Smooth increase and decrease PWM = breathing LED [OK]
      Hint: Use increasing then decreasing PWM values for breathing effect [OK]
      Common Mistakes:
      • Using digitalWrite instead of analogWrite for brightness
      • Skipping the decreasing brightness loop
      • Using large PWM steps causing jerky effect