
--__-- LED FONCTION--__--
LED1fichhiersource.cpp@0:ebbe5882cc94, 2012-06-21 (annotated)
- Committer:
- captorsaw
- Date:
- Thu Jun 21 09:46:19 2012 +0000
- Revision:
- 0:ebbe5882cc94
--__-- LED FONCTION--__--
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
captorsaw | 0:ebbe5882cc94 | 1 | // dim0.itt LED blinking |
captorsaw | 0:ebbe5882cc94 | 2 | // the question was how to enable dimming on multiple digital led the same time . |
captorsaw | 0:ebbe5882cc94 | 3 | // it could be done simpler with math/sin, yet it I found it more fun |
captorsaw | 0:ebbe5882cc94 | 4 | #include "mbed.h" |
captorsaw | 0:ebbe5882cc94 | 5 | |
captorsaw | 0:ebbe5882cc94 | 6 | DigitalOut led[4] = { LED1, LED2, LED3, LED4 }; |
captorsaw | 0:ebbe5882cc94 | 7 | int dim[4] = { 1, 1, 1, 1 }; // 1:always on N: darker, I use 1..100 |
captorsaw | 0:ebbe5882cc94 | 8 | |
captorsaw | 0:ebbe5882cc94 | 9 | |
captorsaw | 0:ebbe5882cc94 | 10 | void Dim( ) { |
captorsaw | 0:ebbe5882cc94 | 11 | for (long int i=0; i < 10000; ++i) { // repeat a few times just to slow down |
captorsaw | 0:ebbe5882cc94 | 12 | for (int i2=0; i2<4; ++i2) { |
captorsaw | 0:ebbe5882cc94 | 13 | led[i2] = (((i%dim[i2])==0) ? 1 : 0); |
captorsaw | 0:ebbe5882cc94 | 14 | } |
captorsaw | 0:ebbe5882cc94 | 15 | } |
captorsaw | 0:ebbe5882cc94 | 16 | } |
captorsaw | 0:ebbe5882cc94 | 17 | |
captorsaw | 0:ebbe5882cc94 | 18 | void Update1( int i ) { // i:1..99 |
captorsaw | 0:ebbe5882cc94 | 19 | dim[0] = i; |
captorsaw | 0:ebbe5882cc94 | 20 | dim[1] = (i-33)%200 + 1; |
captorsaw | 0:ebbe5882cc94 | 21 | dim[2] = (i-66)%200 + 1; |
captorsaw | 0:ebbe5882cc94 | 22 | dim[3] = i-100; // could be (i-100)%200 + 1; |
captorsaw | 0:ebbe5882cc94 | 23 | } |
captorsaw | 0:ebbe5882cc94 | 24 | |
captorsaw | 0:ebbe5882cc94 | 25 | void Update2( int i ) { // i:1..99 |
captorsaw | 0:ebbe5882cc94 | 26 | dim[0] = 100-i; |
captorsaw | 0:ebbe5882cc94 | 27 | dim[1] = (i-66)%200 + 1; |
captorsaw | 0:ebbe5882cc94 | 28 | dim[2] = (i-33)%200 + 1; |
captorsaw | 0:ebbe5882cc94 | 29 | dim[3] = i; |
captorsaw | 0:ebbe5882cc94 | 30 | } |
captorsaw | 0:ebbe5882cc94 | 31 | |
captorsaw | 0:ebbe5882cc94 | 32 | /* phase-shift the LED dimming 1..100 positive, 101..199 going back |
captorsaw | 0:ebbe5882cc94 | 33 | that work, but the above is easier to understand |
captorsaw | 0:ebbe5882cc94 | 34 | int Rate( int i ) { // calculate dim rate, convert 1..200 to 1..100..1 |
captorsaw | 0:ebbe5882cc94 | 35 | return (i<100) ? i : (200-i); |
captorsaw | 0:ebbe5882cc94 | 36 | } |
captorsaw | 0:ebbe5882cc94 | 37 | void Update( int i ) { |
captorsaw | 0:ebbe5882cc94 | 38 | dim[0] = Rate( i%200 + 1 ); |
captorsaw | 0:ebbe5882cc94 | 39 | dim[1] = Rate( (i+(i<100?-33:33))%200 + 1); |
captorsaw | 0:ebbe5882cc94 | 40 | dim[2] = Rate( (i+(i<100?-66:66))%200 + 1); |
captorsaw | 0:ebbe5882cc94 | 41 | dim[3] = Rate( (i+100)%200 + 1); |
captorsaw | 0:ebbe5882cc94 | 42 | } |
captorsaw | 0:ebbe5882cc94 | 43 | */ |
captorsaw | 0:ebbe5882cc94 | 44 | |
captorsaw | 0:ebbe5882cc94 | 45 | int main() { |
captorsaw | 0:ebbe5882cc94 | 46 | while(1) { |
captorsaw | 0:ebbe5882cc94 | 47 | for (int i = 1; i <100; ++i ) // to |
captorsaw | 0:ebbe5882cc94 | 48 | { |
captorsaw | 0:ebbe5882cc94 | 49 | Update1( i ); |
captorsaw | 0:ebbe5882cc94 | 50 | Dim( ); |
captorsaw | 0:ebbe5882cc94 | 51 | } |
captorsaw | 0:ebbe5882cc94 | 52 | for (long int i = 1; i <100; ++i ) // and back |
captorsaw | 0:ebbe5882cc94 | 53 | { |
captorsaw | 0:ebbe5882cc94 | 54 | Update2( i ); |
captorsaw | 0:ebbe5882cc94 | 55 | Dim( ); |
captorsaw | 0:ebbe5882cc94 | 56 | } |
captorsaw | 0:ebbe5882cc94 | 57 | } |
captorsaw | 0:ebbe5882cc94 | 58 | } |