Most micro controllers come with a fairly limited amount of PWM outputs, or the PWM outputs have a too slow switching frequency, ar too low resolution. There are many reasons to upgrade for example your Arduino with additional PWM outputs. You can control the speed of motors, or the dim of LEDs, for example.
The PCA9685 chip brings you 16 additional PWM digital outputs, it’s controlled by I2C, and works fine in 3.3V or 5V environment (2.3V to 5.5V max.).
It has a built in clock. That means that you do not need to continuously send a signal to it, tying up your microcontroller. You send instructions, and then it just runs, until you change the instructions.
It is 5V compliant, means you can run it on 3.3V and still safely operate with 5V logic level.
6 address select pins allow for setting the I2C address of one of 62 different values, making it easy to control up to 992 PWM outputs on just one I2C bus.
PWM frequency can be adjusted between 24Hz and 1.6 KHz.
12-bit resolution for each output (4096 possible values).
Configurable push-pull or open-drain output.
Output enable pin to quickly disable all the outputs.
The module comes with reverse polarity protection, and current limiting output resistors.
Male pin headers for 3/4 of the outputs are included, also a screw terminal block for the power supply (2 pin).