Übungen zu Klassen 3BHEL

Dependencies:   mbed

Übungen zu Klassen 3BHEL

Erzeugen einer Bibliothek MyLed

Committer:
bulmecisco
Date:
Thu May 19 15:30:39 2016 +0000
Revision:
0:b098c8f91521
?bungen zu Klassen 3BHEL

Who changed what in which revision?

UserRevisionLine numberNew 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 }