Simple application to control and fade LEDs with a PCA9685 device
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Basic CLI application for controlling LEDs over I2C on a Raspbery Pi or similar device connected to a PCA9685 device (Like the Adafruit PWM driver board) (Most testing is being done with a Pi Zero Wireless). Written in C and designed to be small, light and fast.

I use this along with ha-bridge ( to easily control lighting with my Amazon Alexa device.


libPCA9685 by edlins See


mkdir build && cd build
cmake ..
make install  (as root)


root@uniform /usr/local/src/fade9685/build [2]$ ./fade9685 -h
 fade9685 [options]
  -h    help, show this screen and quit
  -R    Reset the PCA9685
  -f    Frequency in Hz (24-1526)
  -d    Set Duty Cycle Instantly (0 - 100)
  -l    Fade to Luminosity (0 - 100)
  -s    Step (Larger value fades more quickly)
  -b    Bus number (default 1)
  -a    Address (Default 0x42)
  -c    Channel (0 - 15) Can be repeated for multiple channels or -1 for all
  -v    Show verbose outbut (0-5, 0 = NONE, 5 = DEBUG)
  -D    Enable libPCA9685 debugging


To reset the device and set frequency (in the examples, the device is at address 0x41 on bus 1):

./fade9685 -b 1 -a 0x41 -f 1000 -R

To set two outputs instantly to a specific duty cycle:

./fade9685 -b 1 -a 0x41 -c 0 -c 3 -d 50

To fade outputs to a certain luminosity level (0-100%): ** this might change in future revisions

./fade9685 -b 1 -a 0x41 -c 0 -c 3 -c 14 -c 15 -l 40

Fading to accurate amounts with a float is OK too:

./fade9685 -b 1 -a 0x41 -c 3 -l 0.6

To fade all outputs to a desired level use -c -1:

./fade9685 -b 1 -a 0x41 -c -1 -l 90

Note that when fading outputs you can control the fade rate with -s

-s 30 or so gives a nice rate with a Pi Zero W.