Erster Test der Event-Klasse

Dependencies:   mbed

4AHEL Event Klasse

Revision:
0:518dcb1bc8ad
Child:
1:2dbe3e9c662e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu May 19 10:22:31 2016 +0000
@@ -0,0 +1,81 @@
+/*  State Machine Implementierung für einen Lichtschalter
+    simuliert durch den Rot-Anteil der RGB-Led und dem Taster sw1
+    siehe: https://developer.mbed.org/users/fpucher/code/HIM0Board/wiki/STM-Schalter
+*/
+
+#include "mbed.h"
+
+PwmOut red(p36);
+PwmOut green(p5);
+PwmOut blue(p34);
+DigitalOut led1(LED1);
+DigitalOut led2(LED2);
+DigitalOut led3(LED3);
+DigitalOut led4(LED4);
+DigitalIn sw2(P0_10);
+DigitalIn sw3(P0_23);
+DigitalIn sw4(P1_16);
+
+// ---------------------- Event Klasse ------------------------
+class Event
+{
+    bool _pressed;
+    InterruptIn _isr;
+public:
+    Event( PinName pin ) : _isr(pin) {
+        _pressed = false;
+        _isr.rise(this, &Event::_RisingIsr);
+    }
+
+    void _RisingIsr() {
+        if( _isr.read())
+            _pressed = true;
+    }
+
+    bool CheckFlag() {
+        if( _pressed ) {
+            _pressed = false;
+            return true;
+        }
+        return false;
+    }
+
+};
+
+// ----------------------- STM Klasse ---------------------------
+class Rgb
+{
+    PwmOut _red;
+public:
+    Rgb( PinName red ) : _red(red) {}
+    void LedOn() {
+        _red = 0;
+    }
+
+    void Dimm() {
+        //_red = 0;
+        for(float i=0.0; i <= 1.0; i+= 0.1) {
+            _red = i;
+            wait_ms(200);
+        }
+    }
+
+    void LedOff() {
+        _red = 1;
+    }
+};
+//--------------------------- Hauptprogramm ------------------------
+
+Rgb rgb(p36);
+Event  sw1(P0_15);
+
+int main()
+{
+    blue=green=1;
+    rgb.LedOff();
+    while(true) {
+        if(sw1.CheckFlag())
+            rgb.LedOn();
+    }
+//  ...
+}
\ No newline at end of file