Program to demonstrate NXP semiconductor's PCA9955B chip working with the BBC micro:bit

Dependencies:   PCA995xA microbit

Fork of PCA9955A_Hello by InetrfaceProducts NXP

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...

Files at this revision

API Documentation at this revision

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