MicroPython

The examples in this guide are no longer supported. Check out the PCA9685 driver guide for CircuitPython and Python usage: https://learn.adafruit.com/16-channel-pwm-servo-driver
Note this page describes how to use a MicroPython.org version of this library with MicroPython boards. Skip back to the previous page if you're using a CircuitPython board like the Feather M0 express!

In addition to CircuitPython there's an older MicroPython version of the PCA9685 library that you can use with some MicroPython boards.  Before you get started it will help to be familiar with these guides for working with MicroPython:

See all the MicroPython guides in the learning system for more information.

MicroPython Module Install

To use the PCA9685 with your MicroPython board you'll need to install the micropython-adafruit-pca9685 MicroPython module on your board.  Remember this module is for MicroPython.org firmware and not Adafruit CircuitPython!

First make sure you are running the latest version of MicroPython for your board.  If you're using the ESP8266 MicroPython port you must be running version 1.8.5 or higher as earlier versions do not support using .mpy modules as shown in this guide.  

Next download the latest pca9685.mpy, servo.mpy, motor.mpy, and stepper.mpy file from the releases page of the micropython-adafruit-pca9685 GitHub repository.  You'll need to copy all of the files to your MicroPython board's file system and can use a tool like ampy to copy the files to the board.

Usage

The following section will show how to control the PCA9685 from the board's Python prompt / REPL.   First connect to the board's serial REPL so you are at the MicroPython >>> prompt.

I2C Initialization

First you'll need to initialize the I2C bus for your board.  On MicroPython.org firmware which uses the machine API you can initialize I2C like the MicroPython I2C guide mentions.  For example on a board like the ESP8266 you can run (assuming you're using the default SDA gpio #4 and SCL gpio #5 pins like on a Feather & PCA9685 FeatherWing):

Download: file
import machine
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))

Then import the PCA9685 module as follows:

Download: file
import pca9685

LED & Servo Control

At this point you're ready to use the PCA9685 module to dim LEDs and controls servos.  Using the module with MicroPython is exactly the same as with CircuitPython so check out the CircuitPython usage section to see details on using the board.

This guide was first published on Oct 25, 2016. It was last updated on Oct 25, 2016. This page (MicroPython) was last updated on Sep 15, 2019.