![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
I2C driver for the NXP chip PCA9685 16xPWM LED controller A total of 4 RGBA LEDs can be controlled by 1 chip giving a RGBA value in the form of: rgba(0-255,0-255,0-255,0-100) then dimmed by 0-100%
Diff: main.cpp
- Revision:
- 0:62c7c3514d8f
diff -r 000000000000 -r 62c7c3514d8f main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Jun 15 23:30:43 2012 +0000 @@ -0,0 +1,69 @@ +#include "mbed.h" +#include "i2c.h" +#include "pca9685_reg.h" + +DigitalOut myled(LED1); +Serial pc(USBTX, USBRX); +AnalogIn mypot(p20); + +int main() { + + + unsigned char level; + unsigned char rgba_color[4]; + + i2c_probe(); + init_pca9685(LEDDRV1); + + rgba_color[0]=0xff; //red (0-255) + rgba_color[1]=0x00; //green (0-255) + rgba_color[2]=0x00; //blue (0-255) + rgba_color[3]=100; //amber (0-100) (0.00-1.00) + + while (1) { + level=mypot*100; + printf("level: %d\r\n",level); + pca9685_rgba_led(LEDDRV1,RGBA_LED1,rgba_color,level); + //channel_light(0,r*level/0xff); + //channel_light(1,g*level/0xff); + //channel_light(2,b*level/0xff); + + } +} + +/* void loop() { + int r, g, b; + + // fade from blue to violet + for (r = 0; r < 256; r++) { + analogWrite(REDPIN, r); + delay(FADESPEED); + } + // fade from violet to red + for (b = 255; b > 0; b--) { + analogWrite(BLUEPIN, b); + delay(FADESPEED); + } + // fade from red to yellow + for (g = 0; g < 256; g++) { + analogWrite(GREENPIN, g); + delay(FADESPEED); + } + // fade from yellow to green + for (r = 255; r > 0; r--) { + analogWrite(REDPIN, r); + delay(FADESPEED); + } + // fade from green to teal + for (b = 0; b < 256; b++) { + analogWrite(BLUEPIN, b); + delay(FADESPEED); + } + // fade from teal to blue + for (g = 255; g > 0; g--) { + analogWrite(GREENPIN, g); + delay(FADESPEED); + } +} +-------------------------------------------------------------------------------- +*/