§BHELI / Mbed 2 deprecated Fahrradleuchte

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
anti2810
Date:
Mon Feb 23 14:24:41 2015 +0000
Child:
1:4d500c8ba221
Commit message:
Hi

Changed in this revision

BtnEventM0.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BtnEventM0.h	Mon Feb 23 14:24:41 2015 +0000
@@ -0,0 +1,144 @@
+class BtnEventM0
+{
+public:
+    int16_t pressed;
+
+    BtnEventM0(PinName pin) : _isr(pin) {
+        pressed=0;
+    }
+
+    // Ist eine steigende Flanke aufgetreten ?
+    int CheckFlag() {
+        if( pressed ) {
+            pressed=0;
+            return 1;
+        }
+        return 0;
+    }
+
+    // 1..Button is pressed  else 0
+    int CheckButton() {
+        return _isr.read();
+    }
+
+    void Init() {
+        _isr.rise(this, &BtnEventM0::RisingISR);
+    }
+
+    void RisingISR() {
+        if( _isr.read() )
+            pressed = 1;
+    }
+protected:
+    InterruptIn _isr;
+};
+
+/*
+class BtnEventM02 : public BtnEventM0
+{
+public:
+    BtnEventM02(PinName pin) : BtnEventM0(pin) {
+        _tm.stop();
+        _tm.reset();
+        _state=1;
+    }
+
+    void Init() {
+        _isr.rise(this, &BtnEventM02::RisingISR);
+    }
+
+    void RisingISR() {
+        if( !_isr.read() )
+            return;
+        pressed = 1;
+        _tm.start();
+        _state = 2;
+    }
+
+    void CheckButton() {
+        if( _state==1 )
+            return;
+        if( _state==2 ) {
+            if( !_isr.read() ) {
+                _state = 1;
+                return;
+            }
+            if( _tm.read_ms()>500 ) {
+                _tm.reset();
+                _state = 3;
+                pressed = 1;
+            }
+        } else if( _state==3 ) {
+            if( !_isr.read() ) {
+                _state = 1;
+                return;
+            }
+            if( _tm.read_ms()>100 ) {
+                _tm.reset();
+                _state = 3;
+                pressed = 1;
+            }
+        }
+    }
+private:
+    int16_t _state;
+    Timer _tm;
+};
+*/
+
+class AnalogInHL : public AnalogIn
+{
+public:
+    AnalogInHL(PinName pin) : AnalogIn(pin) { }
+    int Read() {
+        return read_u16()>>6;
+    }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Feb 23 14:24:41 2015 +0000
@@ -0,0 +1,115 @@
+#include "mbed.h"
+#include "BtnEventM0.h"
+
+BusOut lb(P1_7,P1_6,P1_4,P1_3,P1_1,P1_0,LED4,LED3,LED2,LED1);
+BusOut stLED(P1_13,P1_12);                                      
+
+BtnEventM0 Btn1(P0_15), Btn2(P0_23);
+
+class FahrradLeuchte {                          //Eine Klasse namens FahrradLeuchte
+    public:                                     //Öffentlich
+        void Init() { state=1; t1.start(); }    //Beim Aufrufen wird der Status auf 1 gesetzt und der Timer t1 gestartet
+        void State1Func();                      //Funktion definieren
+        void State2Func();                      //Funktion definieren
+        void State3Func();                      //Funktion definieren
+    public:                                     //Öffentlich
+        void State1Action();                    //Funktion definieren
+        void State2Action();                    //Funktion definieren
+        void State3Action();                    //Funktion definieren
+    public:                                     //Öffentlich
+        int state;                              //Integer state definieren
+        Timer t1;                               //Timer t1 definieren
+};
+
+FahrradLeuchte fl;                              //Klasse als Variabel aktivieren
+
+int main() {                                    //Main-Funktion
+    lb=0;                                       //Gesamte Ledbar auf 0 setzen
+    Btn1.Init(); Btn2.Init();                   //Btn1 und Btn2 mit Init ansprechen
+    fl.Init();
+    while(1)
+    {
+        if( fl.state==1 )
+            fl.State1Func();
+        if( fl.state==2 )
+            fl.State2Func();
+        if( fl.state==3 )
+            fl.State3Func();
+    }
+    
+}
+
+void FahrradLeuchte::State1Func()
+{
+    t1.reset();
+    stLED = 1;
+    while(1)
+    {
+        State1Action();
+        if( Btn1.CheckFlag() )
+            { state=2; return; }
+        if( Btn2.CheckFlag() )
+            { state=3; return; }
+    }
+}
+
+void FahrradLeuchte::State2Func()
+{
+    t1.reset();
+    stLED = 2;
+    while(1)
+    {
+        State2Action();
+        if( Btn1.CheckFlag() )
+            { state=3; return; }
+        if( Btn2.CheckFlag() )
+            { state=1; return; }
+    }
+}
+
+void FahrradLeuchte::State3Func()
+{
+    t1.reset();
+    stLED = 3;
+    while(1)
+    {
+        State3Action();
+        if( Btn1.CheckFlag() )
+            { state=1; return; }
+        if( Btn2.CheckFlag() )
+            { state=2; return; }
+    }
+}
+
+void FahrradLeuchte::State1Action()
+{
+    if( t1.read_ms()<500 )
+        return;
+    t1.reset();
+    if( lb==0 )
+        lb = 512;
+    else
+        lb = 0;
+}
+
+void FahrradLeuchte::State2Action()
+{
+    if( t1.read_ms()<200 )
+        return;
+    t1.reset();
+    if( lb==0 )
+        lb = 256;
+    else
+        lb = 0;
+}
+
+void FahrradLeuchte::State3Action()
+{
+    if( t1.read_ms()<100 )
+        return;
+    t1.reset();
+    if( lb==0 )
+        lb = 128;
+    else
+        lb = 0;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Feb 23 14:24:41 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e188a91d3eaa
\ No newline at end of file