Arduino Pulse Width Modulation

Arduino Pulse Width Modulation
Arduino Pulse Width Modulation

The most frequent modulation is Arduino Pulse Width Modulation. Pulse width modulation has been the most used digital sound control method throughout time. However, many control mechanisms and systems use it. When talking about pulse width modulation (PWM), the initial pulse width comes to mind. Controlling power devices with pulse width modulation is straightforward. It can also control power for light, heat, or movement. Pulse width modulation can quickly flip a device’s output from full power to no power to reduce power. This on-and-off cycle creates the impression that power has been lowered without harming the device we are powering. This On-Off control can also alter LED light intensity by controlling power delivery. This is LED dimming. Many light or sound systems, RC models, and industrial control and measurement systems use pulse width modulation for its powerful and efficient power and control.

What Is Pulse Width modulation?

Pulse Width Modulation (PWM) converts digital data to analog. Digital control creates an on-and-off square wave. This on-off pattern simulates voltages between 5 and 0 volts. When the signal is on is termed pulse width. Modulate that width to acquire different analog values. If you repeat this on-off pattern fast enough with an LED, the signal appears as a continuous voltage between 0 and 5V controlling the LED’s brightness. Pulse width modulation signals are digital signals with only two states: on and off.

The Arduino Uno’s rail voltages are 0 and 5 volts. Texts are paraphrased and cited. You may appear to quote rather than use the text to support your ideas if you do this too often. Square wave duty cycles are percentages. How long the signal is on relative to the whole off-on cycle, multiplied by 100%. A 1/4-on signal has a 25% duty cycle. Arduino Uno and related MCUs provide PWM output on pins 3, 5, 6, 9, 10, and 11. These pins can generate PWM signals using analogWrite(). The function accepts pin number and duty cycle.

Have you ever wanted more exact Arduino output voltage control? PWM saves the day. PWM controls LED brightness, motor speed, and more just a few lines of code. This beginner’s guide covers everything you need to use PWM on Arduino projects. PWM and its operation will be explained first. We’ll then demonstrate PWM with a simple LED fading example. You’ll learn to add complex PWM features to Arduino projects by the end. Stay tuned as we explore Arduino PWM’s precision output voltage control!

Pulse Width Modulation

Power is controlled using PWM. It does this by rapidly turning a power source on and off. Total power depends on how long the power source is “on” versus “off”. This is duty cycle.

PWM lets you regulate variable-power devices like LED brightness and motor speed.PWM on Arduino PWM is supported on various Arduino pins. UNO pins 3, 5, 6, 9, 10, and 11 output PWM.

PWM on Arduino is done via analogWrite(). This function has two parameters:

Pin to output PWM signal

Duty cycle: 0 (always off) to 255 (always on).

PWM signals with 75% duty cycles (192/255) are output on pin 9 using:

9192; analogWrite;

This rapidly turned the pin on 75% and off 25%.

Using PWM

Common Arduino PWM uses include:

Controlling LED brightness. Brighter light with higher duty cycle.

Motor speed control. Motor speed increases with duty cycle.

Creating analog outputs. Though the Arduino is digital, PWM can simulate analog behavior.

Conserving power. Pulsing power reduces power utilization compared to turning a device on whole time.

PWM adds nuance and unpredictability to Arduino projects. Control power and smooth transitions instead than just turning gadgets on or off. PWM gives your Arduino new possibilities!

How PWM Works on Arduino

Digital Pulse Width Modulation (PWM) generates analog signals. Arduino analogWrite() generates PWM. This function generates a PWM signal on a pin with a pin number and a duty cycle value between 0 and 255.

Duty Cycle

The duty cycle is the signal’s HIGH/LOW time. Signals with 50% duty cycles are HIGH for the same period as LOW. A 25% duty cycle indicates the signal is LOW 3/4 and HIGH 1/4. Voltage rises with duty cycle.

PWM Frequency

How fast the signal switches HIGH/LOW depends on PWM frequency. The Arduino PWM frequency is 490 Hz. Signals switch HIGH and LOW 490 times every second. Higher frequencies are not visible, whereas lower frequencies flicker lights and motors.

Using PWM

PWM controls LEDs, motors, and servo motors. Change the duty cycle to alter LED brightness, motor speed, or servo angle. Set the duty cycle with analogWrite() to regulate LED brightness. The LED turns off at 0, half bright at 128, and completely bright at 255. Set motor speed with analogWrite(). High duty cycles spin the motor quicker than low duty cycles. PWM lets digital microcontrollers like Arduino operate analog devices. Change the duty cycle to control analog circuits with different values.

PWM Pins on Arduino Boards

PWM pins on Arduino boards convert digital signals to analog outputs. These pins regulate LED brightness, motor speed, and servo position.

PWM Control

Control devices get on/off pulses from PWM. Duty cycle is the fraction of the cycle the Arduino sends a pulse. A 50% duty cycle indicates the signal is on and off half the time. Change this duty cycle to modify gadget power.

To alter LED brightness, use PWM to adjust duty cycle. A 25% duty cycle dims the LED, whereas 75% brightens it. The LED flickers on and off quickly, but your eyes see varying brightness levels.

PWM Pins

Most Arduino boards contain PWM pins. PWM pins for Arduino Uno are 3, 5, 6, 9, 10, and 11. Arduino Mega pins 2–13 and 44–46 support PWM. These pins are indicated with ~ on the Arduino board.

Use analogWrite() to PWM a pin. For instance, to fade pin 9 LED:

analogWriting(9, 255); // LED fully on analogWrite(9, 128); 1/2 LED brightness analogWrite(9, 0); // LED off

From 0 to 255, analogWrite can be set. This function lets you gradually fade an LED, regulate motor speed, or set servo angle. PWM is a great Arduino utility!

Other Uses

Besides brightness control, PWM has various uses. It can drive servo motors, generate sounds, and generate analog voltages. Endless possibilities!

Using the analogWrite() Function for PWM

If you wish to regulate something other than on or off, you need PWM. Analog signals are converted to digital pulses using PWM. Control these digital pulses to approximate an analog output with analogWrite().

How PWM Works

PWM swiftly turns a digital pin on and off and varies its “on” pulse width. PWM pins with 50% duty cycle turn on for 5 microseconds, off for 5, and repeat. Variating the pulse width, or “on” duration, simulates an analog output by altering the device’s average power.

Using analogWrite()

Arduino PWM pins may be readily controlled with analogWrite(). It requires two arguments.

pin: PWM pin. This Arduino Uno pin must be PWM-capable, like 3, 5, 6, 9, 10, and 11.

value: PWM duty cycle, 0–255. 255 is always on, 0 off.

For instance, to set pin 9 to 50% duty cycle:

9-127 analogWrite;

Pin 9 will be on for 5 microseconds, off for 5, then repeated to simulate 50% power.

PWM controls LED brightness, motor or fan speed, servo position, and more. PWM is ideal for devices that benefit from fluctuating power levels. Change Arduino duty cycles to examine how your devices’ power output changes.

PWM is a handy Arduino utility. Read about your Arduino model’s PWM capabilities to maximize its potential!

PWM Applications and Projects

LED Fading

PWM is often used to adjust LED brightness. LED brightness may be controlled by rapidly pulsing it on and off. High duty cycles (longer “on” duration) appear brighter, whereas low duty cycles appear darker. Slowly changing the duty cycle creates LED fading.

Servomotor Control

PWM signals are converted to mechanical movement via servomotors’ integrated circuitry. By changing the PWM signal duty cycle, you may determine the servomotor shaft angle. The shaft will move to one extreme, the center, and the opposing extreme with a 1ms, 2ms, and 3ms pulse, respectively. This makes servomotors helpful for robotics that require precise mechanical part control.

Analog Output

Arduinos and comparable microcontrollers are digital, but PWM can emulate analog output. Variable digital signal duty cycles can control analog voltage levels for speakers, motors, and more. A 50% duty cycle may be 2.5V, 75% 3.75V, etc. This method helps digital microcontrollers operate analog devices.

DC Motor Speed Control

DC motor speed is proportional to voltage. PWM controls DC motor speed by adjusting average voltage. Lower duty cycles slow the motor, while greater duty cycles increase average voltage and speed. Microcontrollers make variable speed control for DC motors easier.

PWM gives digital circuits and projects analog-like control. PWM is useful for fading an LED, controlling a servo, simulating an analog signal, and regulating motor speed. Applications are infinite!


You now know everything you need to start using PWM on your Arduino board. As you saw, it’s a great way to accurately control LEDs, servos, and motors. You can customize behavior with a few lines of code. The built-in analogWrite() function simplifies project implementation. Choose a pin, set the duty cycle percentage, and start racing. Now that you understand the basics, you can explore and improve your PWM skills. When output voltage is carefully controlled, the possibilities are unlimited. Pulsing with your Arduino will help you master this crucial skill!

Be the first to comment

Leave a Reply

Your email address will not be published.