This function can be used to adjust the PWM frequency, which determines how many full 'pulses' per second are generated by the IC. Stated differently, the frequency determines how 'long' each pulse is in duration from start to finish, taking into account both the high and low segments of the pulse.

Frequency is important in PWM, since setting the frequency too high with a very small duty cycle can cause problems, since the 'rise time' of the signal (the time it takes to go from 0V to VCC) may be longer than the time the signal is active, and the PWM output will appear smoothed out and may not even reach VCC, potentially causing a number of problems.


  • freq: A number representing the frequency in Hz, between 40 and 1600


The following code will set the PWM frequency to 1000Hz:


setPWM(channel, on, off)


This function sets the start (on) and end (off) of the high segment of the PWM pulse on a specific channel.  You specify the 'tick' value between 0..4095 when the signal will turn on, and when it will turn off.  Channel indicates which of the 16 PWM outputs should be updated with the new values.


  • channel: The channel that should be updated with the new values (0..15)
  • on: The tick (between 0..4095) when the signal should transition from low to high
  • off:the tick (between 0..4095) when the signal should transition from high to low


The following example will cause channel 15 to start low, go high around 25% into the pulse (tick 1024 out of 4096), transition back to low 75% into the pulse (tick 3072), and remain low for the last 25% of the pulse:

pwm.setPWM(15, 1024, 3072)

Using as GPIO

There's also some special settings for turning the pins fully on or fully off

You can set the pin to be fully on with

pwm.setPWM(pin, 4096, 0);

You can set the pin to be fully off with

pwm.setPWM(pin, 0, 4096);

This guide was first published on Jun 26, 2016. It was last updated on May 21, 2024.

This page (Library Reference) was last updated on Mar 08, 2024.

Text editor powered by tinymce.