Skip to content

PCA9685 + Bottango

Yes, you can use a PCA9685 servo driver board with Bottango. But…

Though it is supported, there are some limitations you need to be aware of. It can often ultimately not be the right hardware choice for use with Bottango.

  • An Arduino Uno R3 has pretty low specs, and using this board takes up additional CPU cycles and RAM. On an Arduino Uno R3 or Nano, you cannot use more than 5 servos with Bottango and this board or you will run out of memory and crash the Arduino. With a more advanced board like an ESP32, you can use all 16 channels.

  • The microcontroller communicates with the PCA9685 over I2C. On an Arduino Uno R3 / Nano / Mega this can result in extra latency and sluggishness when animating, and sometimes unreliable communication.

In some light testing, I have found the 16 channel driver to work error free with Bottango and more advanced boards. On an Arduino Mega, I have controlled all 16 servo channels using the board, though have seen some latency.

In general, if you can get away with it, having a standalone power circuit, and using the microcontroller itself rather than using a PCA9685 to generate the signals for the servos is going to be easier for those starting out and better performance with Bottango.

Bottango firmware does not have software support for that driver without first enabling it. Follow the steps in the Bottango firmware documentation to enable that module if you are uploading the firmware via source. If you are using the in-app uploading option, be sure to check the “Include Adafruit PCA9685 PWM Servo Driver Library” option.

Once you’ve enabled support in Bottango firmware, you’ll need to set up each servo in Bottango to communicate with the PCA driver in the app. Select the servo, and then change the “Connection” dropdown from “pin” to “i2c and pin.” Then set the address of your driver board. The default is 0x40, which is what your board’s address will be unless you have soldered the address into a different configuration. Unless you know you’ve done that, you probably haven’t. Then set the pin on the servo to match the pin on the driver board (0 - 15).

Adafruit, the company that designed and sells the official version of this board, has the best guide for learning how to correctly wire up and use the PCA9685 Servo Driver.