PWM / servo driver · NXP PCA9685

PCA9685 — i2c address & wiring

16 channels of 12-bit PWM for servos and LEDs — set once over i2c, held in hardware.

Key facts

PCA9685 at a glance

i2c address
0x400x410x420x430x440x450x460x470x480x490x4A0x4B0x4C0x4D0x4E0x4F
address-selectable via pins/jumpers
Logic voltage2.3–5.5 V
Typedriver
PartNXP PCA9685
Ships withgeneric modules — plain 0.1″ headers, no connector system

The chip

What the NXP PCA9685 actually is

16-channel, 12-bit PWM controller with its own internal oscillator: the host writes duty cycles over i2c and the chip generates all sixteen waveforms continuously with zero further CPU load. Output frequency spans roughly 24 Hz to 1526 Hz for all channels together (200 Hz at reset), with configurable totem-pole or open-drain outputs and an output-enable pin — the ubiquitous 16-servo driver boards are this chip plus a power rail.

Watch out: Six address pins reach past the sixteen listed here — the datasheet allows 62 devices on one bus — but the top of the range is a minefield. Every PCA9685 also answers the LED All Call address 0x70 from power-up (ALLCALLADR resets to E0h, ALLCALL enabled), which collides head-on with TCA954x multiplexers; three Sub Call addresses (0x71/0x72/0x74) exist too, though those stay disabled until you set the SUBx bits. Separately: feed servo V+ from its own 5–6 V supply — powering servos through the logic pin browns out the whole bus.

Wiring

How to connect the PCA9685

HOST · Arduino / ESP32 / Pi PCA9685 3V3/5V VCC VCC · 2.3–5.5 V GND GND GND SDA SDA SDA · data SCL SCL SCL · clock 0x40–0x4F pull-up resistors to VCC on SDA & SCL — usually already on the breakout

The PCA9685 talks i2c at address 0x40 (up to 16 selectable addresses, handy when you need more than one on the same bus). It runs at 2.3–5.5 V, so match your host's logic level — if your host is 5 V and a board on the bus is 3.3 V-only, add a level shifter. Use the compatibility checker to confirm the exact cable for your setup.

Because the address is selectable, you can run several PCA9685 boards on one bus by setting each to a different address — no extra wiring beyond the shared SDA/SCL.

Wiring is the usual four: power, ground, SDA and SCL, plus pull-up resistors — almost always already fitted on the breakout. Nothing showing up? Run an i2c scan first; if the bus is silent, the 7-step checklist finds it faster than guessing.

Go deeper

Guides covering the PCA9685

Alternatives

Other i2c drivers

Watch the bus

Boards that clash with the PCA9685

These want addresses the PCA9685 also answers (0x42, 0x44, 0x45, 0x4A, 0x4B), so they can't share a bus with it untouched. If one is address-selectable, strap it elsewhere; if not, the conflict guide covers the multiplexer and second-bus routes, and the collision roundup explains why a scan won't warn you.

Get one

Questions

PCA9685 i2c FAQ

What is the PCA9685's i2c address?

The PCA9685 uses 0x40 or 0x41 or 0x42 or 0x43 or 0x44 or 0x45 or 0x46 or 0x47 or 0x48 or 0x49 or 0x4A or 0x4B or 0x4C or 0x4D or 0x4E or 0x4F, selected with an address pin or solder jumper on the board. If a scan turns up something unexpected, our i2c address list names the usual suspect for every address.

What voltage does the PCA9685 run at?

2.3–5.5 V logic. That range covers both 3.3 V and 5 V hosts, so it drops onto a Pi, ESP32 or Arduino without a level shifter.

Can I use two PCA9685s on one i2c bus?

Yes — set each one to a different address (0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F) using its address pin or jumper, then wire both to the same SDA/SCL. That gives you up to 16 on a single bus before you need a multiplexer.

Does the PCA9685 come as a plug-together breakout?

Not in the mainstream connector ecosystems — PCA9685 modules are generic boards with 0.1″ headers, so you'll be soldering headers and running jumper wires to SDA, SCL, power and ground.

What should I watch out for with the PCA9685?

Six address pins reach past the sixteen listed here — the datasheet allows 62 devices on one bus — but the top of the range is a minefield. Every PCA9685 also answers the LED All Call address 0x70 from power-up (ALLCALLADR resets to E0h, ALLCALL enabled), which collides head-on with TCA954x multiplexers; three Sub Call addresses (0x71/0x72/0x74) exist too, though those stay disabled until you set the SUBx bits. Separately: feed servo V+ from its own 5–6 V supply — powering servos through the logic pin browns out the whole bus.