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...
main.cpp
- Committer:
- nxp_ip
- Date:
- 2015-03-04
- Revision:
- 2:cfa5103184b1
- Parent:
- 1:8b5c26cc269c
- Child:
- 3:a67c21ad4173
File content as of revision 2:cfa5103184b1:
#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 ), }; 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 ); 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 c = 1.0; c > 0.0; c -= 0.01 ) { for ( int ch = 0; ch < 16; ch++ ) { leds[ ch ].current( c ); } wait( 0.01 ); } } } #endif