Übungen zu Klassen 3BHEL

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 myled(LED1);
00004 
00005 class MyLed {
00006     DigitalOut _led;
00007 public:
00008     MyLed(PinName pin) :  _led(pin) { }
00009     
00010     void LedOn()  { _led = 1; } 
00011     void LedOff() { _led = 0; }
00012 };
00013 
00014 // Bei drücken eines Tasters soll eine ISR aufgerufen werden
00015 // bool CheckFlag();  // soll true zurück geben, wenn eine Taste gedrückt wurde
00016 
00017 class Event {
00018     InterruptIn _isr;
00019     bool _pressed;
00020 public:
00021     Event(PinName pin) : _isr(pin) {
00022         _isr.rise(this, &Event::rise);
00023         _pressed = false;
00024     }
00025         
00026     void rise() {
00027         _pressed = true;
00028     }
00029     
00030     bool CheckFlag() {
00031         if(_pressed) {
00032             _pressed=false;
00033             return true;
00034         }
00035         return false;
00036     }
00037 };
00038 
00039 class RgbLed {
00040     PwmOut _g;
00041     PwmOut _b;
00042     PwmOut _r;
00043 public:
00044     RgbLed(PinName g, PinName b, PinName r) :  _g(g), _b(b), _r(r) { }
00045     
00046     void write(float g, float b, float r) {
00047         _g = g;
00048         _b = b;
00049         _r = r;
00050     }
00051 };
00052 
00053 MyLed myled2(LED1);
00054 MyLed myled3(LED3);
00055 RgbLed myled(P0_9, P1_15, P0_21); // g, b, r
00056 Event sw1(P0_10);
00057 
00058 int main() {
00059     while(1) {
00060         if(sw1.CheckFlag()) {
00061             myled3.LedOn();
00062             wait(0.5f);
00063             myled3.LedOff();
00064         }
00065         
00066         myled.write(0.1, 0.2, 0.3);
00067         myled2.LedOn();
00068         wait(0.2);
00069         myled2.LedOff();
00070         wait(0.2);
00071 
00072     }
00073 }