Program to demonstrate NXP semiconductor's PCA9955B chip working with the BBC micro:bit
Dependencies: PCA995xA microbit
Fork of PCA9955A_Hello by
This is a simple program that allows you to control each port on a PCA9955B connected over i2c to a BBC micro:bit using a simple USB serial communication program.
I've written it to work with the 2 digit SMD soldering kit I designed. Drop me an email at tb942@hotmail.co.uk for further info on that...
Revision 3:a67c21ad4173, committed 2015-03-19
- Comitter:
- nxp_ip
- Date:
- Thu Mar 19 08:42:39 2015 +0000
- Parent:
- 2:cfa5103184b1
- Child:
- 4:fa025bb69dab
- Commit message:
- Updated to use high-level-API: LedPwmOut
Changed in this revision
| PCA995xA.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/PCA995xA.lib Wed Mar 04 10:33:14 2015 +0000 +++ b/PCA995xA.lib Thu Mar 19 08:42:39 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/nxp_ip/code/PCA995xA/#d2865e756169 +http://mbed.org/users/nxp_ip/code/PCA995xA/#fe221e1d4f44
--- a/main.cpp Wed Mar 04 10:33:14 2015 +0000
+++ b/main.cpp Thu Mar 19 08:42:39 2015 +0000
@@ -1,75 +1,32 @@
-#include "mbed.h"
-
-#include "PCA9955A.h"
-PCA9955A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option)
-
-int main()
-{
- led_cntlr.current( ALLPORTS, 1.0 ); // Set all ports output current 100%
-
- while(1) {
- for ( int port = 0; port < led_cntlr.number_of_ports(); port++ ) {
- for ( int i = 1; i <= 100; i++ ) {
- led_cntlr.pwm( port, (float)i / 100.0 );
- wait( 0.01 );
- }
- }
- led_cntlr.pwm( ALLPORTS, 0.0 ); // Set all ports output PWM 0%
- }
-}
-
-
-
-#if 0 // Sample of using LedPwmOut API
#include "mbed.h"
#include "PCA9955A.h"
-PCA9955A led_cntlr( p28, p27, 0x02 );
-LedPwmOutCC leds[] = {
- LedPwmOutCC( led_cntlr, L0 ),
- LedPwmOutCC( led_cntlr, L4 ),
- LedPwmOutCC( led_cntlr, L8 ),
- LedPwmOutCC( led_cntlr, L12 ),
-
- LedPwmOutCC( led_cntlr, L1 ),
- LedPwmOutCC( led_cntlr, L5 ),
- LedPwmOutCC( led_cntlr, L9 ),
- LedPwmOutCC( led_cntlr, L13 ),
-
- LedPwmOutCC( led_cntlr, L2 ),
- LedPwmOutCC( led_cntlr, L6 ),
- LedPwmOutCC( led_cntlr, L10 ),
- LedPwmOutCC( led_cntlr, L14 ),
-
- LedPwmOutCC( led_cntlr, L3 ),
- LedPwmOutCC( led_cntlr, L7 ),
- LedPwmOutCC( led_cntlr, L11 ),
- LedPwmOutCC( led_cntlr, L15 ),
-
-};
+PCA9955A led_cntlr( p28, p27, 0x02 ); // SDA, SCL, Slave_address(option)
+LedPwmOutCC led0( led_cntlr, L0 ); // Instance for LED0 pin
+LedPwmOutCC led1( led_cntlr, L1 ); // Instance for LED1 pin
+LedPwmOutCC led2( led_cntlr, L2 ); // Instance for LED2 pin
int main()
{
- for ( int ch = 0; ch < 16; ch++ )
- leds[ ch ] = 1.0;
- for ( int ch = 0; ch < 16; ch++ )
- leds[ ch ].current( 0.0 );
+ led0.current( 0.5 ); // LED0 pin current output setting to 50%
+ led1.current( 0.5 ); // LED1 pin current output setting to 50%
+ led2.current( 0.5 ); // LED2 pin current output setting to 50%
while(1) {
- for ( int ch = 0; ch < 16; ch++ ) {
- for ( float p = 0.0; p < 1.0; p += 0.01 ) {
-// leds[ ch ] = p;
- leds[ ch ].current( p );
- wait( 0.01 );
- }
+
+ for ( float p = 1.0; p >= 0.0; p -= 0.01 ) {
+ led0 = p; // Set LED0 output PWM dutycycle as 'p'
+ wait( 0.01 );
}
- for ( float c = 1.0; c > 0.0; c -= 0.01 ) {
- for ( int ch = 0; ch < 16; ch++ ) {
- leds[ ch ].current( c );
-
- }
+
+ for ( float p = 1.0; p >= 0.0; p -= 0.01 ) {
+ led1 = p; // Set LED1 output PWM dutycycle as 'p'
+ wait( 0.01 );
+ }
+
+ for ( float p = 1.0; p >= 0.0; p -= 0.01 ) {
+ led2 = p; // Set LED2 output PWM dutycycle as 'p'
wait( 0.01 );
}
}
}
-#endif
\ No newline at end of file
