Hello world code for PCA9955A class library. The PCA9955A is a 16-channel Fm+ I2C-bus 57mA/20V constant current LED driver. This program shows its basic operation of PWM and current settings.

Dependencies:   mbed PCA995xA

Please refer to the component page for details

PCA9955B and PCA9956B are I²C-bus controlled 16-channel constant current LED driver optimized for dimming and blinking.

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.
Output current also controllable by API function.
For detail information, refer API document of LedPwmOutCC Class class which is included in PCA995xA class library.

#include "mbed.h"
#include "PCA9956A.h"

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

int main()
{
    while( 1 ) {
        for( float p = 0.0f; p < 1.0f; p += 0.1f ) {
            led     = p;
            wait( 0.1 );
        }
    }
}
Committer:
nxp_ip
Date:
Tue Jun 21 09:13:41 2022 +0000
Revision:
6:9abd0b582c2c
Parent:
5:e2ad761c8570
fixed comments and format

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nxp_ip 2:cfa5103184b1 1 #include "mbed.h"
nxp_ip 2:cfa5103184b1 2 #include "PCA9955A.h"
nxp_ip 2:cfa5103184b1 3
nxp_ip 6:9abd0b582c2c 4 // making an instance of PCA9955A (PCA9955A is cpmpatible to PCA9955B)
nxp_ip 3:a67c21ad4173 5 PCA9955A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option)
nxp_ip 5:e2ad761c8570 6
nxp_ip 6:9abd0b582c2c 7 // LED output instances in array
nxp_ip 5:e2ad761c8570 8 LedPwmOutCC leds[] = {
nxp_ip 6:9abd0b582c2c 9 LedPwmOutCC ( led_cntlr, L0 ), // Instance for LED0 pin
nxp_ip 6:9abd0b582c2c 10 LedPwmOutCC ( led_cntlr, L1 ), // Instance for LED1 pin
nxp_ip 6:9abd0b582c2c 11 LedPwmOutCC ( led_cntlr, L2 ), // Instance for LED2 pin
nxp_ip 6:9abd0b582c2c 12 LedPwmOutCC ( led_cntlr, L3 ), // Instance for LED3 pin
nxp_ip 6:9abd0b582c2c 13 LedPwmOutCC ( led_cntlr, L4 ), // Instance for LED4 pin
nxp_ip 6:9abd0b582c2c 14 LedPwmOutCC ( led_cntlr, L5 ), // Instance for LED5 pin
nxp_ip 6:9abd0b582c2c 15 LedPwmOutCC ( led_cntlr, L6 ), // Instance for LED6 pin
nxp_ip 6:9abd0b582c2c 16 LedPwmOutCC ( led_cntlr, L7 ), // Instance for LED7 pin
nxp_ip 6:9abd0b582c2c 17 LedPwmOutCC ( led_cntlr, L8 ), // Instance for LED8 pin
nxp_ip 6:9abd0b582c2c 18 LedPwmOutCC ( led_cntlr, L9 ), // Instance for LED9 pin
nxp_ip 5:e2ad761c8570 19 LedPwmOutCC ( led_cntlr, L10 ), // Instance for LED10 pin
nxp_ip 5:e2ad761c8570 20 LedPwmOutCC ( led_cntlr, L11 ), // Instance for LED11 pin
nxp_ip 5:e2ad761c8570 21 LedPwmOutCC ( led_cntlr, L12 ), // Instance for LED12 pin
nxp_ip 5:e2ad761c8570 22 LedPwmOutCC ( led_cntlr, L13 ), // Instance for LED13 pin
nxp_ip 5:e2ad761c8570 23 LedPwmOutCC ( led_cntlr, L14 ), // Instance for LED14 pin
nxp_ip 5:e2ad761c8570 24 LedPwmOutCC ( led_cntlr, L15 ) // Instance for LED15 pin
nxp_ip 5:e2ad761c8570 25 };
nxp_ip 2:cfa5103184b1 26
nxp_ip 2:cfa5103184b1 27 int main()
nxp_ip 2:cfa5103184b1 28 {
nxp_ip 6:9abd0b582c2c 29 for ( int i = 0; i < 16; i++ )
nxp_ip 6:9abd0b582c2c 30 leds[ i ].current( 0.5 ); // LED output current set to 50%
nxp_ip 2:cfa5103184b1 31
nxp_ip 2:cfa5103184b1 32 while(1) {
nxp_ip 6:9abd0b582c2c 33 for ( int i = 0; i < 16; i++ ) {
nxp_ip 5:e2ad761c8570 34 for ( float p = 1.0; p >= 0.0; p -= 0.01 ) {
nxp_ip 6:9abd0b582c2c 35 leds[ i ] = p; // set 'p' value into LED output instance
nxp_ip 5:e2ad761c8570 36 wait( 0.01 );
nxp_ip 5:e2ad761c8570 37 }
nxp_ip 6:9abd0b582c2c 38 }
nxp_ip 2:cfa5103184b1 39 }
nxp_ip 2:cfa5103184b1 40 }