Dr. Pucher
/
3BHEL_mbed_blinkyClass
Übungen zu Klassen 3BHEL
Übungen zu Klassen 3BHEL
Erzeugen einer Bibliothek MyLed
main.cpp@0:b098c8f91521, 2016-05-19 (annotated)
- Committer:
- bulmecisco
- Date:
- Thu May 19 15:30:39 2016 +0000
- Revision:
- 0:b098c8f91521
?bungen zu Klassen 3BHEL
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bulmecisco | 0:b098c8f91521 | 1 | #include "mbed.h" |
bulmecisco | 0:b098c8f91521 | 2 | |
bulmecisco | 0:b098c8f91521 | 3 | //DigitalOut myled(LED1); |
bulmecisco | 0:b098c8f91521 | 4 | |
bulmecisco | 0:b098c8f91521 | 5 | class MyLed { |
bulmecisco | 0:b098c8f91521 | 6 | DigitalOut _led; |
bulmecisco | 0:b098c8f91521 | 7 | public: |
bulmecisco | 0:b098c8f91521 | 8 | MyLed(PinName pin) : _led(pin) { } |
bulmecisco | 0:b098c8f91521 | 9 | |
bulmecisco | 0:b098c8f91521 | 10 | void LedOn() { _led = 1; } |
bulmecisco | 0:b098c8f91521 | 11 | void LedOff() { _led = 0; } |
bulmecisco | 0:b098c8f91521 | 12 | }; |
bulmecisco | 0:b098c8f91521 | 13 | |
bulmecisco | 0:b098c8f91521 | 14 | // Bei drücken eines Tasters soll eine ISR aufgerufen werden |
bulmecisco | 0:b098c8f91521 | 15 | // bool CheckFlag(); // soll true zurück geben, wenn eine Taste gedrückt wurde |
bulmecisco | 0:b098c8f91521 | 16 | |
bulmecisco | 0:b098c8f91521 | 17 | class Event { |
bulmecisco | 0:b098c8f91521 | 18 | InterruptIn _isr; |
bulmecisco | 0:b098c8f91521 | 19 | bool _pressed; |
bulmecisco | 0:b098c8f91521 | 20 | public: |
bulmecisco | 0:b098c8f91521 | 21 | Event(PinName pin) : _isr(pin) { |
bulmecisco | 0:b098c8f91521 | 22 | _isr.rise(this, &Event::rise); |
bulmecisco | 0:b098c8f91521 | 23 | _pressed = false; |
bulmecisco | 0:b098c8f91521 | 24 | } |
bulmecisco | 0:b098c8f91521 | 25 | |
bulmecisco | 0:b098c8f91521 | 26 | void rise() { |
bulmecisco | 0:b098c8f91521 | 27 | _pressed = true; |
bulmecisco | 0:b098c8f91521 | 28 | } |
bulmecisco | 0:b098c8f91521 | 29 | |
bulmecisco | 0:b098c8f91521 | 30 | bool CheckFlag() { |
bulmecisco | 0:b098c8f91521 | 31 | if(_pressed) { |
bulmecisco | 0:b098c8f91521 | 32 | _pressed=false; |
bulmecisco | 0:b098c8f91521 | 33 | return true; |
bulmecisco | 0:b098c8f91521 | 34 | } |
bulmecisco | 0:b098c8f91521 | 35 | return false; |
bulmecisco | 0:b098c8f91521 | 36 | } |
bulmecisco | 0:b098c8f91521 | 37 | }; |
bulmecisco | 0:b098c8f91521 | 38 | |
bulmecisco | 0:b098c8f91521 | 39 | class RgbLed { |
bulmecisco | 0:b098c8f91521 | 40 | PwmOut _g; |
bulmecisco | 0:b098c8f91521 | 41 | PwmOut _b; |
bulmecisco | 0:b098c8f91521 | 42 | PwmOut _r; |
bulmecisco | 0:b098c8f91521 | 43 | public: |
bulmecisco | 0:b098c8f91521 | 44 | RgbLed(PinName g, PinName b, PinName r) : _g(g), _b(b), _r(r) { } |
bulmecisco | 0:b098c8f91521 | 45 | |
bulmecisco | 0:b098c8f91521 | 46 | void write(float g, float b, float r) { |
bulmecisco | 0:b098c8f91521 | 47 | _g = g; |
bulmecisco | 0:b098c8f91521 | 48 | _b = b; |
bulmecisco | 0:b098c8f91521 | 49 | _r = r; |
bulmecisco | 0:b098c8f91521 | 50 | } |
bulmecisco | 0:b098c8f91521 | 51 | }; |
bulmecisco | 0:b098c8f91521 | 52 | |
bulmecisco | 0:b098c8f91521 | 53 | MyLed myled2(LED1); |
bulmecisco | 0:b098c8f91521 | 54 | MyLed myled3(LED3); |
bulmecisco | 0:b098c8f91521 | 55 | RgbLed myled(P0_9, P1_15, P0_21); // g, b, r |
bulmecisco | 0:b098c8f91521 | 56 | Event sw1(P0_10); |
bulmecisco | 0:b098c8f91521 | 57 | |
bulmecisco | 0:b098c8f91521 | 58 | int main() { |
bulmecisco | 0:b098c8f91521 | 59 | while(1) { |
bulmecisco | 0:b098c8f91521 | 60 | if(sw1.CheckFlag()) { |
bulmecisco | 0:b098c8f91521 | 61 | myled3.LedOn(); |
bulmecisco | 0:b098c8f91521 | 62 | wait(0.5f); |
bulmecisco | 0:b098c8f91521 | 63 | myled3.LedOff(); |
bulmecisco | 0:b098c8f91521 | 64 | } |
bulmecisco | 0:b098c8f91521 | 65 | |
bulmecisco | 0:b098c8f91521 | 66 | myled.write(0.1, 0.2, 0.3); |
bulmecisco | 0:b098c8f91521 | 67 | myled2.LedOn(); |
bulmecisco | 0:b098c8f91521 | 68 | wait(0.2); |
bulmecisco | 0:b098c8f91521 | 69 | myled2.LedOff(); |
bulmecisco | 0:b098c8f91521 | 70 | wait(0.2); |
bulmecisco | 0:b098c8f91521 | 71 | |
bulmecisco | 0:b098c8f91521 | 72 | } |
bulmecisco | 0:b098c8f91521 | 73 | } |