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...
Diff: main.cpp
- 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