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

Revision:
3:a67c21ad4173
Parent:
2:cfa5103184b1
Child:
5:9f89d6e17ff7
--- 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