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 the analogWrite() function do in Arduino?
It creates a PWM (Pulse Width Modulation) signal on a pin, simulating an analog voltage by switching the pin ON and OFF very fast.
Click to reveal answer
beginner
What is PWM and why is it useful?
PWM stands for Pulse Width Modulation. It controls power by changing how long a signal is ON versus OFF, useful for dimming LEDs or controlling motor speed.
Click to reveal answer
beginner
What is the range of values you can use with analogWrite() on Arduino?
You can use values from 0 to 255, where 0 means always OFF and 255 means always ON (full power).
Click to reveal answer
beginner
Does analogWrite() output a true analog voltage?
No, it outputs a PWM signal that looks like an analog voltage when smoothed by a circuit or device.
Click to reveal answer
beginner
How can you change the brightness of an LED using analogWrite()?
By changing the value passed to analogWrite(), you change the duty cycle of the PWM signal, which changes the LED brightness.
Click to reveal answer
What does a PWM signal do in Arduino?
AMeasures frequency of a signal
BOutputs a steady DC voltage
CReads analog voltage from a sensor
DSwitches a pin ON and OFF rapidly to simulate analog voltage
✗ Incorrect
PWM switches the pin ON and OFF quickly to simulate different voltage levels.
What value range does analogWrite() accept?
A0 to 255
B0 to 1023
C0 to 100
D0 to 5
✗ Incorrect
The analogWrite() function accepts values from 0 to 255.
If you want an LED to be half as bright using PWM, what value might you use?
A255
B128
C0
D512
✗ Incorrect
128 is about half of 255, so it sets the LED brightness to roughly half.
Does analogWrite() output a true analog voltage?
AOnly on special pins
BYes, always
CNo, it outputs a PWM signal
DOnly if you use an external DAC
✗ Incorrect
analogWrite() outputs a PWM signal, not a true analog voltage.
Which Arduino pins can use analogWrite()?
AOnly PWM-capable digital pins
BOnly analog input pins
CAll digital pins
DOnly pins 0 and 1
✗ Incorrect
analogWrite() works only on pins that support PWM output.
Explain how analogWrite() uses PWM to control LED brightness.
Think about how turning a light ON and OFF quickly can change how bright it looks.
You got /4 concepts.
Describe the difference between a true analog voltage and the PWM signal from analogWrite().
Consider how a blinking light can look dimmer even though it’s either fully ON or OFF.
You got /4 concepts.
Practice
(1/5)
1. What does the analogWrite() function do on an Arduino board?
easy
A. It sets a digital pin to HIGH or LOW.
B. It reads the voltage from an analog sensor.
C. It outputs a PWM signal to simulate an analog voltage on a digital pin.
D. It measures the frequency of a signal on a pin.
Solution
Step 1: Understand the purpose of analogWrite()
The analogWrite() function does not output a true analog voltage but uses PWM (Pulse Width Modulation) to simulate varying voltage levels on digital pins.
Step 2: Compare options with function behavior
It outputs a PWM signal to simulate an analog voltage on a digital pin. correctly describes this behavior. Options A, B, and D describe other functions or actions unrelated to analogWrite().
Final Answer:
It outputs a PWM signal to simulate an analog voltage on a digital pin. -> Option C
Quick Check:
analogWrite() = PWM output [OK]
Hint: Remember: analogWrite() controls brightness/speed via PWM [OK]
Common Mistakes:
Confusing analogWrite() with analogRead()
Thinking analogWrite() outputs true analog voltage
Assuming analogWrite() sets pin HIGH or LOW directly
2. Which of the following is the correct syntax to set pin 9 to half brightness using analogWrite()?
easy
A. analogWrite(9, 512);
B. analogWrite(9, 0);
C. analogWrite(9, 255);
D. analogWrite(9, 127);
Solution
Step 1: Understand the value range for analogWrite()
The analogWrite() function accepts values from 0 to 255, where 0 is off and 255 is full brightness.
Step 2: Calculate half brightness value
Half brightness is about half of 255, which is approximately 127. A uses 512 (out of range), B uses 0 (off), C uses 255 (full brightness), so D is correct.
Final Answer:
analogWrite(9, 127); -> Option D
Quick Check:
Half brightness ≈ 127 [OK]
Hint: Use values between 0-255; half is about 127 [OK]
Common Mistakes:
Using values above 255 (like 512)
Confusing digitalWrite() with analogWrite()
Using full brightness value instead of half
3. What will be the effect of the following code snippet on an LED connected to pin 6?
The code sets pin 6 to 0 (off) for 1 second, then to 255 (full brightness) for 1 second, repeatedly.
Step 2: Understand LED behavior
When the pin is 0, the LED is off; when 255, it is fully on. The delays cause the LED to stay in each state for 1 second, making it blink on and off every second.
Final Answer:
The LED will blink on and off every second. -> Option A
Quick Check:
0 and 255 with delays = blink [OK]
Hint: 0 means off, 255 means full on; delays cause blinking [OK]
Common Mistakes:
Thinking analogWrite(0) dims LED instead of off
Ignoring delay effects on LED timing
Assuming LED flickers rapidly without delay
4. Identify the error in this code snippet intended to fade an LED on pin 10:
void setup() {
pinMode(10, OUTPUT);
}
void loop() {
for (int i = 0; i <= 255; i++) {
analogWrite(10, i);
delay(10);
}
for (int i = 255; i >= 0; i--) {
analogWrite(10, i);
delay(10);
}
}
medium
A. The code will work correctly and fade the LED in and out.
B. The for loop variable i should be declared outside the loop.
C. The pin 10 is not set as OUTPUT.
D. analogWrite() cannot be used with pin 10.
Solution
Step 1: Check pinMode setup
Pin 10 is correctly set as OUTPUT in setup().
Step 2: Analyze the for loops and analogWrite usage
The loops increase and then decrease the PWM value from 0 to 255 and back, with delays to create a smooth fade effect. This is a common and correct pattern.
Final Answer:
The code will work correctly and fade the LED in and out. -> Option A
Quick Check:
For loops with analogWrite create fade [OK]
Hint: For fading, increase then decrease PWM values smoothly [OK]
Common Mistakes:
Forgetting to set pinMode to OUTPUT
Thinking analogWrite can't be used on pin 10
Misunderstanding loop variable scope
5. You want to control the speed of a DC motor using PWM on pin 3. Which code snippet correctly sets the motor speed to 60% power?
hard
A. analogWrite(3, 60); // 60 is the percentage value
B. analogWrite(3, 153); // 60% of 255 is about 153
C. analogWrite(3, 0.6); // decimal value for 60%
D. analogWrite(3, 255); // full power always
Solution
Step 1: Convert percentage to PWM value
60% of the maximum PWM value 255 is 0.6 x 255 = 153.
Step 2: Check the analogWrite parameter
analogWrite() requires an integer between 0 and 255. analogWrite(3, 153); // 60% of 255 is about 153 uses 153, which is correct. analogWrite(3, 60); // 60 is the percentage value uses 60 which is too low, C uses a decimal which is invalid, and D sets full power.
Final Answer:
analogWrite(3, 153); // 60% of 255 is about 153 -> Option B
Quick Check:
60% x 255 = 153 [OK]
Hint: Multiply percentage by 255 for PWM value [OK]
Common Mistakes:
Passing percentage directly instead of scaled value