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

main.cpp

Committer:
Bas
Date:
2012-06-15
Revision:
0:62c7c3514d8f

File content as of revision 0:62c7c3514d8f:

#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);
  } 
}
--------------------------------------------------------------------------------
*/