Test 1 Semester 1 State Machine die Leds Steuert

Dependencies:   mbed C12832

Files at this revision

API Documentation at this revision

Comitter:
kunphil
Date:
Thu Nov 29 18:31:49 2018 +0000
Commit message:
Test 1 aus Semester 7

Changed in this revision

C12832.lib 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
diff -r 000000000000 -r 0b496cc22dd6 C12832.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/C12832.lib	Thu Nov 29 18:31:49 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/askksa12543/code/C12832/#990d5eec2ef6
diff -r 000000000000 -r 0b496cc22dd6 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Nov 29 18:31:49 2018 +0000
@@ -0,0 +1,191 @@
+#include "mbed.h"
+#include "C12832.h"
+/*
+DigitalOut Led1(LED1, 0);
+DigitalOut Led2(LED2, 0);
+DigitalOut Led3(LED3, 0);
+DigitalOut Led4(LED4, 0);
+*/
+InterruptIn  SW1(p14);
+/*
+InterruptIn  SW2(p15); 
+InterruptIn  SW3(p12); 
+InterruptIn  SW4(p16); 
+*/
+
+Timer T1;
+
+//************* BusOut ******************
+//BusOut Leds (LED1, LED2, LED3, LED4);
+
+//************** LCD ****************
+
+C12832 lcd(p5, p7, p6, p8, p11);
+
+//************* VARIABLEN ****************
+
+enum State {ST_EIN=0, ST_AUS, ST_STOP};
+State state;
+
+int LedWert = 3, btnCount = 0;
+
+bool pressed = false;
+
+
+//*********** KLASSEN ***************
+
+class IsA : BusOut{
+    
+    public:
+    IsA():BusOut(LED1, LED2, LED3, LED4){};
+    
+    void LedOff(){write(0);}
+    
+    void LedOn(){write(15);}
+    void LedOn(int wert){write(wert);}
+    
+    
+    };
+
+//**********LEDS Klasseninstanz ***********
+
+IsA *Leds = new IsA();
+
+//************* EREIGNISSE ****************
+ 
+void rise(void)
+{  
+    wait_ms(50);
+    pressed = true;
+}
+
+bool CheckFlag() 
+{
+    if (pressed) {
+        pressed=false;
+        return true;
+        }
+    return false;
+}
+
+//************* STATES ****************
+
+void ST_Ein (void)
+{
+    //Status auf LCD und Serial
+    lcd.cls();      // löscht lcd (clear screen)
+    lcd.locate(0,0);   // x-position, y-position (x: 0-128; y: 0-32)
+    lcd.printf("State: 1 (EIN)");
+    printf("State: 1 (EIN)");
+    // entry
+    
+    // do
+    while(true) {
+        Leds->LedOn(LedWert);
+    
+        if(CheckFlag()) {
+            btnCount++;
+            if(btnCount >= 3){
+                btnCount = 0;
+                LedWert++;
+                state = ST_AUS;
+            
+    // exit
+                return;
+            }
+        }
+    }
+}
+
+void ST_Aus (void)
+{
+    //Status auf LCD und Serial
+    lcd.cls();      // löscht lcd (clear screen)
+    lcd.locate(0,0);   // x-position, y-position (x: 0-128; y: 0-32)
+    lcd.printf("State: 2 (AUS)");
+    printf("State: 2 (AUS)");
+    
+    // entry
+    
+    // do
+    while(true) {
+        Leds->LedOff();
+    
+        if(CheckFlag()) {
+            T1.reset();
+            T1.start();   // start des Timers für den Doppelklick
+             while(1){
+                 
+                 if(T1.read() >= 0.2) { //Warten für zweiten Klick (Doppelklick)
+                        break;                        
+                     }
+                 
+                 else if(CheckFlag()){
+                     T1.stop();
+                     state = ST_STOP;
+                     return;
+                     }
+             }
+            
+            state = ST_EIN;
+
+    // exit
+            T1.stop();
+            return;
+            }
+        }
+}
+
+void ST_Stop (void)
+{
+    //Status auf LCD und Serial
+    lcd.cls();      // löscht lcd (clear screen)
+    lcd.locate(0,0);   // x-position, y-position (x: 0-128; y: 0-32)
+    lcd.printf("State: Stop");
+    printf("State: Stop");
+    wait_ms(200);
+    return;
+}
+
+
+void ST_Error (void)
+{
+    //Status auf LCD und Serial
+    lcd.cls();      // löscht lcd (clear screen)
+    lcd.locate(0,0);   // x-position, y-position (x: 0-128; y: 0-32)
+    lcd.printf("State: ERROR!!!");
+    printf("State: ERROR!!!");
+    wait_ms(200);
+    return;
+}
+
+void stateMachine()
+{
+    switch (state)
+    {
+    case ST_EIN: ST_Ein();
+        break;
+    case ST_AUS: ST_Aus();
+        break;
+    case ST_STOP: ST_Stop();
+        break;
+    default: ST_Error();  // sollte nicht auftreten :-)
+        break;
+    }
+}
+
+
+//************ MAIN ****************
+ 
+int main()
+{
+    SW1.rise(&rise);      //.fall(&fall);
+    
+    Leds->LedOn();
+    wait_ms(500);
+    
+    state = ST_EIN;
+    while(true){
+        stateMachine(); 
+        }
+}
\ No newline at end of file
diff -r 000000000000 -r 0b496cc22dd6 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Nov 29 18:31:49 2018 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e95d10626187
\ No newline at end of file