Dependencies: PCA9955A_library_prototype mbed
main.cpp
- Committer:
- okano
- Date:
- 2014-07-17
- Revision:
- 4:75a2c3550bdc
- Parent:
- 3:c1f60bb03ac4
- Child:
- 5:78bfbf11bb2f
File content as of revision 4:75a2c3550bdc:
#include "mbed.h" #include "PCA9955A.h" BusOut leds( LED4, LED3, LED2, LED1 ); DigitalOut pin( p21 ); AnalogIn ain( p20 ); //AnalogIn ain( dp4 ); PCA9955A led_driver( p28, p27, 0x02 ); // SDA, SCL, I2C_slave_sddress Ticker t; int led_change = 0; void set_color( int v ); void led_cntl(); int main() { float in; float coef = 26.4; float peak = 0; int shift; led_driver.set_all_intensity( 0xFF ); led_driver.set_all_intensity( 0x20, true ); set_color( 1 ); t.attach( &led_cntl, 0.02 ); while(1) { in = (float)ain; peak = in < peak ? peak : in; shift = (int)(coef * peak); leds = 0x1 << shift; peak *= 0.999; if ( shift > 2 ) { led_change = 1; } } } void led_cntl() { static int count = 0; static float intensity = 1.0; if ( led_change ) { set_color( count++ & 0x3 ); led_change = 0; intensity = 1.0; } led_driver.set_all_intensity( (char)(intensity * (float)0xFF) ); intensity *= 0.90; } void set_color( int v ) { v = 0x1 << v; led_driver = (v << 12) | (v << 8) | (v << 4) | v; }