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%

Dependencies:   mbed

Committer:
Bas
Date:
Fri Jun 15 23:30:43 2012 +0000
Revision:
0:62c7c3514d8f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bas 0:62c7c3514d8f 1 #include "mbed.h"
Bas 0:62c7c3514d8f 2 #include "i2c.h"
Bas 0:62c7c3514d8f 3 #include "pca9685_reg.h"
Bas 0:62c7c3514d8f 4
Bas 0:62c7c3514d8f 5 DigitalOut myled(LED1);
Bas 0:62c7c3514d8f 6 Serial pc(USBTX, USBRX);
Bas 0:62c7c3514d8f 7 AnalogIn mypot(p20);
Bas 0:62c7c3514d8f 8
Bas 0:62c7c3514d8f 9 int main() {
Bas 0:62c7c3514d8f 10
Bas 0:62c7c3514d8f 11
Bas 0:62c7c3514d8f 12 unsigned char level;
Bas 0:62c7c3514d8f 13 unsigned char rgba_color[4];
Bas 0:62c7c3514d8f 14
Bas 0:62c7c3514d8f 15 i2c_probe();
Bas 0:62c7c3514d8f 16 init_pca9685(LEDDRV1);
Bas 0:62c7c3514d8f 17
Bas 0:62c7c3514d8f 18 rgba_color[0]=0xff; //red (0-255)
Bas 0:62c7c3514d8f 19 rgba_color[1]=0x00; //green (0-255)
Bas 0:62c7c3514d8f 20 rgba_color[2]=0x00; //blue (0-255)
Bas 0:62c7c3514d8f 21 rgba_color[3]=100; //amber (0-100) (0.00-1.00)
Bas 0:62c7c3514d8f 22
Bas 0:62c7c3514d8f 23 while (1) {
Bas 0:62c7c3514d8f 24 level=mypot*100;
Bas 0:62c7c3514d8f 25 printf("level: %d\r\n",level);
Bas 0:62c7c3514d8f 26 pca9685_rgba_led(LEDDRV1,RGBA_LED1,rgba_color,level);
Bas 0:62c7c3514d8f 27 //channel_light(0,r*level/0xff);
Bas 0:62c7c3514d8f 28 //channel_light(1,g*level/0xff);
Bas 0:62c7c3514d8f 29 //channel_light(2,b*level/0xff);
Bas 0:62c7c3514d8f 30
Bas 0:62c7c3514d8f 31 }
Bas 0:62c7c3514d8f 32 }
Bas 0:62c7c3514d8f 33
Bas 0:62c7c3514d8f 34 /* void loop() {
Bas 0:62c7c3514d8f 35 int r, g, b;
Bas 0:62c7c3514d8f 36
Bas 0:62c7c3514d8f 37 // fade from blue to violet
Bas 0:62c7c3514d8f 38 for (r = 0; r < 256; r++) {
Bas 0:62c7c3514d8f 39 analogWrite(REDPIN, r);
Bas 0:62c7c3514d8f 40 delay(FADESPEED);
Bas 0:62c7c3514d8f 41 }
Bas 0:62c7c3514d8f 42 // fade from violet to red
Bas 0:62c7c3514d8f 43 for (b = 255; b > 0; b--) {
Bas 0:62c7c3514d8f 44 analogWrite(BLUEPIN, b);
Bas 0:62c7c3514d8f 45 delay(FADESPEED);
Bas 0:62c7c3514d8f 46 }
Bas 0:62c7c3514d8f 47 // fade from red to yellow
Bas 0:62c7c3514d8f 48 for (g = 0; g < 256; g++) {
Bas 0:62c7c3514d8f 49 analogWrite(GREENPIN, g);
Bas 0:62c7c3514d8f 50 delay(FADESPEED);
Bas 0:62c7c3514d8f 51 }
Bas 0:62c7c3514d8f 52 // fade from yellow to green
Bas 0:62c7c3514d8f 53 for (r = 255; r > 0; r--) {
Bas 0:62c7c3514d8f 54 analogWrite(REDPIN, r);
Bas 0:62c7c3514d8f 55 delay(FADESPEED);
Bas 0:62c7c3514d8f 56 }
Bas 0:62c7c3514d8f 57 // fade from green to teal
Bas 0:62c7c3514d8f 58 for (b = 0; b < 256; b++) {
Bas 0:62c7c3514d8f 59 analogWrite(BLUEPIN, b);
Bas 0:62c7c3514d8f 60 delay(FADESPEED);
Bas 0:62c7c3514d8f 61 }
Bas 0:62c7c3514d8f 62 // fade from teal to blue
Bas 0:62c7c3514d8f 63 for (g = 255; g > 0; g--) {
Bas 0:62c7c3514d8f 64 analogWrite(GREENPIN, g);
Bas 0:62c7c3514d8f 65 delay(FADESPEED);
Bas 0:62c7c3514d8f 66 }
Bas 0:62c7c3514d8f 67 }
Bas 0:62c7c3514d8f 68 --------------------------------------------------------------------------------
Bas 0:62c7c3514d8f 69 */