This is a driver code for the PCA9632 is an I2C-bus controlled 4-bit LED driver optimized for Red/Green/Blue/Amber (RGBA) color mixing applications. In Individual brightness control mode, each LED output has its own 8-bit resolution (256 steps) fixed frequency Individual PWM controller that operates at 1.5625 kHz with a duty cycle that is adjustable from 0 % to 99.6 % to allow the LED to be set to a specific brightness value. This library including device class and "LedPwmOut class API" for ease of use.

Dependencies:   CompLedDvr

Dependents:   PCA9632_Hello

Please refer to the component page for details

The PCA9632 is an I²C-bus controlled 4-bit LED driver optimized for Red/Green/Blue/Amber (RGBA) color mixing applications.

High-level API is available

A high-level API that can be used as the "PwmOut" of bed-SDK is available.
This API enables to make instances of each LED output pins and control PWM duty cycle by assignment.
For detail information, refer API document of LedPwmOut Class class which is included in PCA962xA class library.

#include "mbed.h"
#include "PCA9632.h"

PCA9632     led_cntlr( p28, p27, 0xC4 );  //  SDA, SCL, Slave_address(option)
LedPwmOut   led( led_cntlr, L0 );

int main()
{
    while( 1 ) {
        for( float p = 0.0f; p < 1.0f; p += 0.1f ) {
            led     = p;
            wait( 0.1 );
        }
    }
}

Files at this revision

API Documentation at this revision

Comitter:
nxp_ip
Date:
Wed Mar 04 08:37:34 2015 +0000
Parent:
0:da1fe3fe7093
Child:
2:3574bf73abf5
Commit message:
"CompLedDvr" library included

Changed in this revision

CompLedDvr.lib Show annotated file Show diff for this revision Revisions of this file
CompLedDvr/CompLedDvr.cpp Show diff for this revision Revisions of this file
CompLedDvr/CompLedDvr.h Show diff for this revision Revisions of this file
CompLedDvr/CompLedDvrAPI.h Show diff for this revision Revisions of this file
CompLedDvr/LedPwmOut.cpp Show diff for this revision Revisions of this file
CompLedDvr/LedPwmOut.h Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CompLedDvr.lib	Wed Mar 04 08:37:34 2015 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/nxp_ip/code/CompLedDvr/#a0e4342d3b3d
--- a/CompLedDvr/CompLedDvr.cpp	Wed Mar 04 04:12:53 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-
-#include    "mbed.h"
-#include    "CompLedDvr.h"
-
-CompLedDvr::CompLedDvr() {}
-CompLedDvr::~CompLedDvr() {}
--- a/CompLedDvr/CompLedDvr.h	Wed Mar 04 04:12:53 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/** Abstract class for LED driver component
- *
- *  Abstract class for LED driver family
- *  No instance can be made from this class
- *
- *  @author  Akifumi (Tedd) OKANO, NXP Semiconductors
- *  @version 0.5
- *  @date    04-Mar-2015
- *
- *  Released under the Apache 2 license License
- */
-
-#ifndef     MBED_CompLedDvr
-#define     MBED_CompLedDvr
-
-#include    "mbed.h"
-
-typedef enum {
-    /** Pin names of LED driver. Those are L0 .. L3, not like "LED0" to avoid mbed board LED names  */
-    L0,             /**< LED0 pin                               */
-    L1,             /**< LED1 pin                               */
-    L2,             /**< LED2 pin                               */
-    L3,             /**< LED3 pin                               */
-    L_NC = ~0x0L    /**< for when the pin is left no-connection */
-} LedPinName;
-
-
-/** Abstract class for LED driver component
- *
- *  @class CompLedDvr
- *
- *  Abstract class for LED driver family
- *  No instance can be made from this class
- */
-class CompLedDvr
-{
-public:
-    /** Default constructor */
-    CompLedDvr();
-
-    /** Destructor */
-    virtual ~CompLedDvr();
-
-    /** Virtual function to define standard function of the component   */
-    virtual void    pwm( int port, float v )    = 0;
-}
-;
-
-#endif  //  MBED_CompLedDvr
-
-
--- a/CompLedDvr/CompLedDvrAPI.h	Wed Mar 04 04:12:53 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-#include    "LedPwmOut.h"
--- a/CompLedDvr/LedPwmOut.cpp	Wed Mar 04 04:12:53 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,23 +0,0 @@
-#include    "mbed.h"
-#include    "LedPwmOut.h"
-
-LedPwmOut::LedPwmOut( CompLedDvr &ledp, LedPinName pin_name )
-    : leddvrp( &ledp ), pin( pin_name )
-{
-    pwm( 0.0 );
-}
-
-LedPwmOut::~LedPwmOut()
-{
-}
-
-void LedPwmOut::pwm( float v )
-{
-    leddvrp->pwm( pin, v );
-}
-
-LedPwmOut& LedPwmOut::operator=( float rhs )
-{
-    pwm( rhs );
-    return ( *this );
-}
\ No newline at end of file
--- a/CompLedDvr/LedPwmOut.h	Wed Mar 04 04:12:53 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/** LedPwmOut class for LED driver component
- *
- *  @author  Akifumi (Tedd) OKANO, NXP Semiconductors
- *  @version 0.5
- *  @date    04-Mar-2015
- *
- *  Released under the Apache 2 license License
- */
-
-#ifndef     MBED_LedPwmOut
-#define     MBED_LedPwmOut
-
-#include    "mbed.h"
-#include    "CompLedDvr.h"
-
-/** LedPwmOut class
- *
- *  "LedPwmOut" class works like "PwmOut" class of mbed-SDK. 
- *  This class provides API on device's pin level with abstracting the LED controller. 
- *
- *  Example:
- *  @code
- *  #include "mbed.h"
- *  #include "PCA9632.h"
- *  
- *  PCA9632     led_cntlr( p28, p27, 0xC4 );  //  SDA, SCL, Slave_address(option)
- *  LedPwmOut   led( led_cntlr, L0 );
- *  
- *  int main()
- *  {
- *      while( 1 ) {
- *          for( float p = 0.0f; p < 1.0f; p += 0.1f ) {
- *              led     = p;
- *              wait( 0.1 );
- *          }
- *      }
- *  }
- *  @endcode
- */
-
-
-class LedPwmOut
-{
-public:
-    LedPwmOut( CompLedDvr &ledp, LedPinName pin_name );
-    virtual ~LedPwmOut();
-
-    virtual void    pwm( float v );
-
-    /** A shorthand for write()
-     */
-    LedPwmOut&      operator= ( float rhs );
-
-private:
-    CompLedDvr      *leddvrp;
-    LedPinName      pin;
-
-    void    pwm( int pin, float value );
-}
-;
-
-#endif  //  MBED_LedPwmOut