Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:e90fdaaa28ef, 2011-04-01 (annotated)
- Committer:
 - szalabala
 - Date:
 - Fri Apr 01 00:48:37 2011 +0000
 - Revision:
 - 0:e90fdaaa28ef
 
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| szalabala | 0:e90fdaaa28ef | 1 | // dimmed kitt LED blinking | 
| szalabala | 0:e90fdaaa28ef | 2 | // the question was how to enable dimming on multiple digital led the same time. | 
| szalabala | 0:e90fdaaa28ef | 3 | // it could be done simpler with math/sin, yet it I found it more fun | 
| szalabala | 0:e90fdaaa28ef | 4 | #include "mbed.h" | 
| szalabala | 0:e90fdaaa28ef | 5 | |
| szalabala | 0:e90fdaaa28ef | 6 | DigitalOut led[4] = { LED1, LED2, LED3, LED4 }; | 
| szalabala | 0:e90fdaaa28ef | 7 | int dim[4] = { 1, 1, 1, 1 }; // 1:always on N: darker, I use 1..100 | 
| szalabala | 0:e90fdaaa28ef | 8 | |
| szalabala | 0:e90fdaaa28ef | 9 | void Dim( ) { | 
| szalabala | 0:e90fdaaa28ef | 10 | for (long int i=0; i < 10000; ++i) { // repeat a few times just to slow down | 
| szalabala | 0:e90fdaaa28ef | 11 | for (int i2=0; i2<4; ++i2) { | 
| szalabala | 0:e90fdaaa28ef | 12 | led[i2] = (((i%dim[i2])==0) ? 1 : 0); | 
| szalabala | 0:e90fdaaa28ef | 13 | } | 
| szalabala | 0:e90fdaaa28ef | 14 | } | 
| szalabala | 0:e90fdaaa28ef | 15 | } | 
| szalabala | 0:e90fdaaa28ef | 16 | |
| szalabala | 0:e90fdaaa28ef | 17 | void Update1( int i ) { // i:1..99 | 
| szalabala | 0:e90fdaaa28ef | 18 | dim[0] = i; | 
| szalabala | 0:e90fdaaa28ef | 19 | dim[1] = (i-33)%200 + 1; | 
| szalabala | 0:e90fdaaa28ef | 20 | dim[2] = (i-66)%200 + 1; | 
| szalabala | 0:e90fdaaa28ef | 21 | dim[3] = i-100; // could be (i-100)%200 + 1; | 
| szalabala | 0:e90fdaaa28ef | 22 | } | 
| szalabala | 0:e90fdaaa28ef | 23 | |
| szalabala | 0:e90fdaaa28ef | 24 | void Update2( int i ) { // i:1..99 | 
| szalabala | 0:e90fdaaa28ef | 25 | dim[0] = 100-i; | 
| szalabala | 0:e90fdaaa28ef | 26 | dim[1] = (i-66)%200 + 1; | 
| szalabala | 0:e90fdaaa28ef | 27 | dim[2] = (i-33)%200 + 1; | 
| szalabala | 0:e90fdaaa28ef | 28 | dim[3] = i; | 
| szalabala | 0:e90fdaaa28ef | 29 | } | 
| szalabala | 0:e90fdaaa28ef | 30 | |
| szalabala | 0:e90fdaaa28ef | 31 | /* phase-shift the LED dimming 1..100 positive, 101..199 going back | 
| szalabala | 0:e90fdaaa28ef | 32 | that work, but the above is easier to understand | 
| szalabala | 0:e90fdaaa28ef | 33 | int Rate( int i ) { // calculate dim rate, convert 1..200 to 1..100..1 | 
| szalabala | 0:e90fdaaa28ef | 34 | return (i<100) ? i : (200-i); | 
| szalabala | 0:e90fdaaa28ef | 35 | } | 
| szalabala | 0:e90fdaaa28ef | 36 | void Update( int i ) { | 
| szalabala | 0:e90fdaaa28ef | 37 | dim[0] = Rate( i%200 + 1 ); | 
| szalabala | 0:e90fdaaa28ef | 38 | dim[1] = Rate( (i+(i<100?-33:33))%200 + 1); | 
| szalabala | 0:e90fdaaa28ef | 39 | dim[2] = Rate( (i+(i<100?-66:66))%200 + 1); | 
| szalabala | 0:e90fdaaa28ef | 40 | dim[3] = Rate( (i+100)%200 + 1); | 
| szalabala | 0:e90fdaaa28ef | 41 | } | 
| szalabala | 0:e90fdaaa28ef | 42 | */ | 
| szalabala | 0:e90fdaaa28ef | 43 | |
| szalabala | 0:e90fdaaa28ef | 44 | int main() { | 
| szalabala | 0:e90fdaaa28ef | 45 | while(1) { | 
| szalabala | 0:e90fdaaa28ef | 46 | for (int i = 1; i <100; ++i ) // to | 
| szalabala | 0:e90fdaaa28ef | 47 | { | 
| szalabala | 0:e90fdaaa28ef | 48 | Update1( i ); | 
| szalabala | 0:e90fdaaa28ef | 49 | Dim( ); | 
| szalabala | 0:e90fdaaa28ef | 50 | } | 
| szalabala | 0:e90fdaaa28ef | 51 | for (long int i = 1; i <100; ++i ) // and back | 
| szalabala | 0:e90fdaaa28ef | 52 | { | 
| szalabala | 0:e90fdaaa28ef | 53 | Update2( i ); | 
| szalabala | 0:e90fdaaa28ef | 54 | Dim( ); | 
| szalabala | 0:e90fdaaa28ef | 55 | } | 
| szalabala | 0:e90fdaaa28ef | 56 | } | 
| szalabala | 0:e90fdaaa28ef | 57 | } |