Sven Erik Knop / Mbed 2 deprecated Glowing

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 DigitalOut myled1(LED1);
00004 DigitalOut myled2(LED2);
00005 DigitalOut myled3(LED3);
00006 DigitalOut myled4(LED4);
00007 
00008 DigitalOut * leds[4];
00009 
00010 class Dimmer {
00011 public:
00012     Dimmer() { 
00013         counter = 0;
00014         level = 0;
00015         which = 0;
00016     }
00017     
00018     void led_dim() {
00019         *(leds[which]) = ( counter <= level ) ? 1 : 0;
00020         
00021         counter++;
00022         if( counter > 100 ) { 
00023            counter = 0;
00024         }
00025     }
00026     
00027     void setLevel(int l) { level = l; }
00028     void setWhich(int w) { which = w; }
00029     
00030 private:
00031     int counter;
00032     int level;
00033     int which;
00034 };
00035 
00036 int main() {
00037     leds[0] = &myled1;
00038     leds[1] = &myled2;
00039     leds[2] = &myled3;
00040     leds[3] = &myled4;
00041 
00042     int level = 0;
00043     int increment = 1;
00044     int which = 0;
00045     
00046     Dimmer dimmer;
00047     Ticker timer;
00048     
00049     timer.attach_us(&dimmer, &Dimmer::led_dim, 20);
00050     
00051     while(1) {
00052         level += increment;
00053         
00054         if( level >= 100 ) { 
00055             which++;
00056             if( which > 3 ) {
00057                 which = 3;
00058                 increment = -1;
00059             }
00060             else {
00061                 level = 0;
00062             }
00063             dimmer.setWhich( which );
00064         }
00065         else if( level <= 0 ) {
00066             which--;
00067             if( which < 0 ) {
00068                 which = 0;
00069                 increment = 1;
00070             }
00071             else {
00072                 level = 100;
00073             }
00074             dimmer.setWhich( which );
00075         }
00076         
00077         dimmer.setLevel(level);
00078         wait(0.01);
00079     }
00080 }