
PCA9685 Servo Controller by Adafruit
Connection Type
USB
Number of servos
16
Audio Support
No
Camera Support
No
Do you want to make a cool Arduino robot with ARC? Maybe a hexapod walker or a piece of art with many moving parts. The PCA9685 servo breakout (also found in Adafruit's popular PWM/Servo pcb) that works with any Arduino that uses shields: Uno, Leo, Mega, or ADK. We recommend using the Uno because it is compact and, combined with this shield, provides a ton of I/O. However, there are several EZB firmwares on this page that you can use for your desired configuration.
The Arduino can be programmed with the EZB firmware for various capabilities when connected to ARC. The tutorial to program the EZB firmware can be found HERE.
Download Firmware Sourcecode
- Mickey's Firmware (Mar 4, 2019)
- EZ-Genuino_Uno_Adafruit_16_Servo_Shield.zip (Dec 11, 2022)
- Miller's Generic PCA9685 EZB_UNO_PCA9685.zip
Tutorial
Now that you have the firmware, you can follow the tutorial to install it by clicking here.
comment removed now
OK Guys I was able to get this to work for me after making changes to the firmware please try the attached file. I have put comments in the code around my changes. DJ please review and test so you can update the package above..
EZ-Genuino_Uno_Adafruit_16_Servo_Shield-SMM.zip
comment removed
What did not work? was there and issue with the zip?
That's ok,
Micky's and DJ,s code work, and my modified file works well also
Comment removed as I don't like post large code scripts.
@ smiller29 - Solid work my friend, I am a amateur extra VE out of middle TN, will shoot you an email. Everything works on both breakouts. A++/ Knew I wasn't crazy!
@DJ - Thanks for posting the code up top. Proves the community based center this program has. Look forward to contributing as well. Have several projects to share soon, time allowing.
@EzAng - Thankful for your input too, seems its a specific issue, the more the community knows the better!
Question for the group how many PCA9685 can be chained together using this firmware and ARC? The below is how you would do it writing code without ARC.
Chaining Drivers Multiple Drivers (up to 62) can be chained to control still more servos. With headers at both ends of the board, the wiring is as simple as connecting a 6-pin parallel cable from one board to the next.
Addressing the Boards Each board in the chain must be assigned a unique address. This is done with the address jumpers on the upper right edge of the board. The I2C base address for each board is 0x40. The binary address that you program with the address jumpers is added to the base I2C address.
To program the address offset, use a drop of solder to bridge the corresponding address jumper for each binary '1' in the address. adafruit_products_2012_10_13_IMG_0692-1024.jpg Board 0: Address = 0x40 Offset = binary 00000 (no jumpers required) Board 1: Address = 0x41 Offset = binary 00001 (bridge A0 as in the photo above) Board 2: Address = 0x42 Offset = binary 00010 (bridge A1) Board 3: Address = 0x43 Offset = binary 00011 (bridge A0 & A1) Board 4: Address = 0x44 Offset = binary 00100 (bridge A2)
etc.
In your sketch, you'll need to declare a separate pobject for each board. Call begin on each object, and control each servo through the object it's attached to. For example: