Hello world code for PCA9956A class library. The PCA9956A is a 24-channel Fm+ I2C-bus 57mA/20V constant current LED driver. This program shows its basic operation of PWM and current settings.
Please refer to the component page for details
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 ); } } }
Diff: main.cpp
- Revision:
- 1:fd208c007499
- Parent:
- 0:11740e097e7b
- Child:
- 2:9b700bf94085
diff -r 11740e097e7b -r fd208c007499 main.cpp --- a/main.cpp Wed Feb 25 06:56:40 2015 +0000 +++ b/main.cpp Wed Mar 04 10:30:26 2015 +0000 @@ -1,6 +1,6 @@ -#include "mbed.h" +#include "mbed.h" -#include "PCA9956A.h" +#include "PCA9956A.h" PCA9956A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option) int main() @@ -17,3 +17,69 @@ led_cntlr.pwm( ALLPORTS, 0.0 ); // Set all ports output PWM 0% } } + + + + + + +#if 0 // Sample of using LedPwmOut API +#include "mbed.h" +#include "PCA9956A.h" + +PCA9956A led_cntlr( p28, p27, 0x02 ); +LedPwmOutCC leds[] = { + LedPwmOutCC( led_cntlr, L2 ), + LedPwmOutCC( led_cntlr, L5 ), + LedPwmOutCC( led_cntlr, L8 ), + LedPwmOutCC( led_cntlr, L11 ), + LedPwmOutCC( led_cntlr, L14 ), + LedPwmOutCC( led_cntlr, L17 ), + LedPwmOutCC( led_cntlr, L20 ), + LedPwmOutCC( led_cntlr, L23 ), + + LedPwmOutCC( led_cntlr, L0 ), + LedPwmOutCC( led_cntlr, L3 ), + LedPwmOutCC( led_cntlr, L6 ), + LedPwmOutCC( led_cntlr, L9 ), + LedPwmOutCC( led_cntlr, L12 ), + LedPwmOutCC( led_cntlr, L15 ), + LedPwmOutCC( led_cntlr, L18 ), + LedPwmOutCC( led_cntlr, L21 ), + + LedPwmOutCC( led_cntlr, L1 ), + LedPwmOutCC( led_cntlr, L4 ), + LedPwmOutCC( led_cntlr, L7 ), + LedPwmOutCC( led_cntlr, L10 ), + LedPwmOutCC( led_cntlr, L13 ), + LedPwmOutCC( led_cntlr, L16 ), + LedPwmOutCC( led_cntlr, L19 ), + LedPwmOutCC( led_cntlr, L22 ), + +}; + +int main() +{ + for ( int ch = 0; ch < 24; ch++ ) + leds[ ch ] = 1.0; + for ( int ch = 0; ch < 24; ch++ ) + leds[ ch ].current( 0.0 ); + + while(1) { + for ( int ch = 0; ch < 24; ch++ ) { + for ( float p = 0.0; p < 1.0; p += 0.01 ) { +// leds[ ch ] = p; + leds[ ch ].current( p ); + wait( 0.01 ); + } + } + for ( float c = 1.0; c > 0.0; c -= 0.01 ) { + for ( int ch = 0; ch < 24; ch++ ) { + leds[ ch ].current( c ); + + } + wait( 0.01 ); + } + } +} +#endif \ No newline at end of file