Skip to content

Arduino library for control of NXP 9633 (and 9632) four channel PWM led driver chips.

Notifications You must be signed in to change notification settings

gordonthree/pca9633

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pca9633

Library to control the NXP / Philips / Texas Instruments PCA9633 four channel 8 bit LED control chip. This chip has four LED driver channels each with its own PWM brightness control, as well as a separate global brightness control. Can be used to control RGB+W LED strips if you use external drivers (transistor, etc.)


Quick start:

// include library
#include <pca9633.h>
#include <Wire.h> // OPTIONAL see below under setup()

// create instance
PCA9633 rgbw; 

void setup() {
	Wire.begin(SDA,SCL); // OPTIONAL not needed if you use the 3rd begin below and are using default i2c pins for your board
	
	// initilize library with device i2c address.
	// consult datasheet for available addresses and use an i2c scan routine to verify
	rgbw.begin(0x60);

	// rgbw.begin(0x60, 50); // optionally set fade delay if using library to transistion between PWM values
	
	// rgbw.begin(0x60, 50, true); // set fade delay and also init the i2c bus using Arduino defaults for your board
}

void loop() {
	rgbw.setrgbw(128,128,128,128); // set all four outputs to 50%
	delay(500);

	rgbw.setrgbw(0,0,0,0); // set all four outputs to 0%
	delay(500);

	rgbw.setpwm(0,255); // ramp channel 0 to 100%
	delay(500);

	rgbw.setpwm(0,0); // ramp channel 0 to 0%
	delay(500);
}

Some functions:

// blocking call, fade single channel from current PWM setting to new PWM setting
rgbw.setpwm(uint8_t pwmaddr, uint8_t pwmval); 

// non blocking call, set all four channels in one command, no fade
rgbw.setrgbw(uint8_t p0, uint8_t p1, uint8_t p2, uint8_t p3);

// update fade step delay, range 0 to 100, default is 10
rgbw.setFade(uint8_t dly);

// retreive current fade delay;
uint8_t fadeDelay = rgbw.getFade(); 

// set global dimmer pwm. will dim all outputs, consult datasheet
rgbw.setgrouppwm(uint8_t pwm);

// init library with slave device address
rgbw.begin(uint8_t devAddr);

// init library with slave device and fade delay
rgbw.begin(uint8_t devAddr, uint8_t fade_delay);

// init library with slave device, fade delay and also call Wire.begin() internally, only set 3rd argument to true
rgbw.begin(uint8_t devAddr, uint8_t fade_delay, uint8_t i2c_init);

My prototype board:

ESP8266 based 4-channel dimmer for large LED strips. Beefy mosfets on each channel with proper 12v drivers.

Image of PCA9633 prototype board

About

Arduino library for control of NXP 9633 (and 9632) four channel PWM led driver chips.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages