This tutorial may be outdated. It is no longer recommended for beginners, and may need modifications to code or hardware that is not indicated in the tutorial.

Overview

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 the video above was made showing the MicroPython version of this library. Follow the guide to see both CircuitPython and MicroPython versions of the PCA9685 library.

Servo motors are one way to make projects come to life with exciting movements like steering robots, flipping switches, and more.  To control a servo you need to generate a special PWM, or pulse-width modulation, signal.  Most development boards can generate a few basic PWM signals, but what if you need to control a lot of servos or don't have a board with PWM support?  The PCA9685 PWM driver board comes to the rescue!  This driver board can generate up to 16-channels (or 8-channels in FeatherWing form) of PWM signals--perfect for driving many servos!

This guide explores how to use the PCA9685 PWM & Servo driver with CircuitPython and MicroPython.  You'll learn how to connect the PCA9685 to a board and use it to control LED brightness and move servos from Python code.

For more background check out these guides on servo motors:

This guide was first published on Oct 25, 2016. It was last updated on Dec 09, 2018. This page (Overview) was last updated on Dec 07, 2018.