Dependencies: PCA9955A_library_prototype mbed
Diff: main.cpp
- Revision:
- 5:78bfbf11bb2f
- Parent:
- 4:75a2c3550bdc
- Child:
- 6:4da1c7f560b8
--- a/main.cpp Thu Jul 17 01:43:50 2014 +0000 +++ b/main.cpp Thu Jul 17 02:08:37 2014 +0000 @@ -1,20 +1,23 @@ -#include "mbed.h" +#include "mbed.h" #include "PCA9955A.h" BusOut leds( LED4, LED3, LED2, LED1 ); DigitalOut pin( p21 ); AnalogIn ain( p20 ); -//AnalogIn ain( dp4 ); +AnalogOut aout( p18 ); -PCA9955A led_driver( p28, p27, 0x02 ); // SDA, SCL, I2C_slave_sddress +PCA9955A led_driver( p28, p27, 0x02 ); // SDA, SCL, I2C_slave_sddress -Ticker t; +Ticker led_maintenance; +Ticker sample_timing; int led_change = 0; +int sampling = 0; void set_color( int v ); void led_cntl(); +void ad_cntl(); @@ -31,24 +34,38 @@ set_color( 1 ); - t.attach( &led_cntl, 0.02 ); + led_maintenance.attach( &led_cntl, 0.02 ); + sample_timing.attach( &ad_cntl, 0.01 ); while(1) { - in = (float)ain; - peak = in < peak ? peak : in; - shift = (int)(coef * peak); - leds = 0x1 << shift; - peak *= 0.999; + + if ( sampling ) { + sampling = 0; + pin =0; + in = (float)ain; + peak = in < peak ? peak : in; + shift = (int)(coef * peak); + leds = 0x1 << shift; + peak *= 0.99; + pin =1; + aout = peak; - if ( shift > 2 ) { - led_change = 1; + if ( shift > 2 ) { + led_change = 1; + } } } } -void led_cntl() +void ad_cntl() +{ + sampling = 1; +} + + +void led_cntl() { static int count = 0; static float intensity = 1.0; @@ -58,9 +75,9 @@ led_change = 0; intensity = 1.0; } - + led_driver.set_all_intensity( (char)(intensity * (float)0xFF) ); - + intensity *= 0.90; }