--__-- LED FONCTION--__--

Dependencies:   mbed

Committer:
captorsaw
Date:
Thu Jun 21 09:46:19 2012 +0000
Revision:
0:ebbe5882cc94
--__-- LED FONCTION--__--

Who changed what in which revision?

UserRevisionLine numberNew 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 }