Dependencies:   mbed

Committer:
sknop
Date:
Thu Nov 26 11:05:33 2009 +0000
Revision:
0:b3b916d72b56

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sknop 0:b3b916d72b56 1 #include "mbed.h"
sknop 0:b3b916d72b56 2
sknop 0:b3b916d72b56 3 DigitalOut myled1(LED1);
sknop 0:b3b916d72b56 4 DigitalOut myled2(LED2);
sknop 0:b3b916d72b56 5 DigitalOut myled3(LED3);
sknop 0:b3b916d72b56 6 DigitalOut myled4(LED4);
sknop 0:b3b916d72b56 7
sknop 0:b3b916d72b56 8 DigitalOut * leds[4];
sknop 0:b3b916d72b56 9
sknop 0:b3b916d72b56 10 class Dimmer {
sknop 0:b3b916d72b56 11 public:
sknop 0:b3b916d72b56 12 Dimmer() {
sknop 0:b3b916d72b56 13 counter = 0;
sknop 0:b3b916d72b56 14 level = 0;
sknop 0:b3b916d72b56 15 which = 0;
sknop 0:b3b916d72b56 16 }
sknop 0:b3b916d72b56 17
sknop 0:b3b916d72b56 18 void led_dim() {
sknop 0:b3b916d72b56 19 *(leds[which]) = ( counter <= level ) ? 1 : 0;
sknop 0:b3b916d72b56 20
sknop 0:b3b916d72b56 21 counter++;
sknop 0:b3b916d72b56 22 if( counter > 100 ) {
sknop 0:b3b916d72b56 23 counter = 0;
sknop 0:b3b916d72b56 24 }
sknop 0:b3b916d72b56 25 }
sknop 0:b3b916d72b56 26
sknop 0:b3b916d72b56 27 void setLevel(int l) { level = l; }
sknop 0:b3b916d72b56 28 void setWhich(int w) { which = w; }
sknop 0:b3b916d72b56 29
sknop 0:b3b916d72b56 30 private:
sknop 0:b3b916d72b56 31 int counter;
sknop 0:b3b916d72b56 32 int level;
sknop 0:b3b916d72b56 33 int which;
sknop 0:b3b916d72b56 34 };
sknop 0:b3b916d72b56 35
sknop 0:b3b916d72b56 36 int main() {
sknop 0:b3b916d72b56 37 leds[0] = &myled1;
sknop 0:b3b916d72b56 38 leds[1] = &myled2;
sknop 0:b3b916d72b56 39 leds[2] = &myled3;
sknop 0:b3b916d72b56 40 leds[3] = &myled4;
sknop 0:b3b916d72b56 41
sknop 0:b3b916d72b56 42 int level = 0;
sknop 0:b3b916d72b56 43 int increment = 1;
sknop 0:b3b916d72b56 44 int which = 0;
sknop 0:b3b916d72b56 45
sknop 0:b3b916d72b56 46 Dimmer dimmer;
sknop 0:b3b916d72b56 47 Ticker timer;
sknop 0:b3b916d72b56 48
sknop 0:b3b916d72b56 49 timer.attach_us(&dimmer, &Dimmer::led_dim, 20);
sknop 0:b3b916d72b56 50
sknop 0:b3b916d72b56 51 while(1) {
sknop 0:b3b916d72b56 52 level += increment;
sknop 0:b3b916d72b56 53
sknop 0:b3b916d72b56 54 if( level >= 100 ) {
sknop 0:b3b916d72b56 55 which++;
sknop 0:b3b916d72b56 56 if( which > 3 ) {
sknop 0:b3b916d72b56 57 which = 3;
sknop 0:b3b916d72b56 58 increment = -1;
sknop 0:b3b916d72b56 59 }
sknop 0:b3b916d72b56 60 else {
sknop 0:b3b916d72b56 61 level = 0;
sknop 0:b3b916d72b56 62 }
sknop 0:b3b916d72b56 63 dimmer.setWhich( which );
sknop 0:b3b916d72b56 64 }
sknop 0:b3b916d72b56 65 else if( level <= 0 ) {
sknop 0:b3b916d72b56 66 which--;
sknop 0:b3b916d72b56 67 if( which < 0 ) {
sknop 0:b3b916d72b56 68 which = 0;
sknop 0:b3b916d72b56 69 increment = 1;
sknop 0:b3b916d72b56 70 }
sknop 0:b3b916d72b56 71 else {
sknop 0:b3b916d72b56 72 level = 100;
sknop 0:b3b916d72b56 73 }
sknop 0:b3b916d72b56 74 dimmer.setWhich( which );
sknop 0:b3b916d72b56 75 }
sknop 0:b3b916d72b56 76
sknop 0:b3b916d72b56 77 dimmer.setLevel(level);
sknop 0:b3b916d72b56 78 wait(0.01);
sknop 0:b3b916d72b56 79 }
sknop 0:b3b916d72b56 80 }