Michaela Knoll
/
20181025_STM_Schalter
STM_Schalter
main.cpp@0:eff81698b0a6, 2018-11-08 (annotated)
- Committer:
- miickno
- Date:
- Thu Nov 08 16:57:46 2018 +0000
- Revision:
- 0:eff81698b0a6
- Child:
- 1:e0a56154b22a
STM_Schalter
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
miickno | 0:eff81698b0a6 | 1 | #include "mbed.h" |
miickno | 0:eff81698b0a6 | 2 | |
miickno | 0:eff81698b0a6 | 3 | DigitalOut Led1(LED1); |
miickno | 0:eff81698b0a6 | 4 | DigitalOut Led2(LED2); |
miickno | 0:eff81698b0a6 | 5 | DigitalOut Led3(LED3); |
miickno | 0:eff81698b0a6 | 6 | DigitalOut Led4(LED4); |
miickno | 0:eff81698b0a6 | 7 | DigitalIn SW2(p15); |
miickno | 0:eff81698b0a6 | 8 | DigitalIn SW3(p12); |
miickno | 0:eff81698b0a6 | 9 | DigitalIn SW4(p16); |
miickno | 0:eff81698b0a6 | 10 | InterruptIn SW1(p14); |
miickno | 0:eff81698b0a6 | 11 | |
miickno | 0:eff81698b0a6 | 12 | bool pressed =false; |
miickno | 0:eff81698b0a6 | 13 | |
miickno | 0:eff81698b0a6 | 14 | enum State{ST_AUS = 0, ST_EIN}; |
miickno | 0:eff81698b0a6 | 15 | |
miickno | 0:eff81698b0a6 | 16 | State state; |
miickno | 0:eff81698b0a6 | 17 | |
miickno | 0:eff81698b0a6 | 18 | void rise(void) |
miickno | 0:eff81698b0a6 | 19 | {pressed =true;} |
miickno | 0:eff81698b0a6 | 20 | |
miickno | 0:eff81698b0a6 | 21 | bool CheckFlag(){ |
miickno | 0:eff81698b0a6 | 22 | if (pressed){ |
miickno | 0:eff81698b0a6 | 23 | pressed = false; |
miickno | 0:eff81698b0a6 | 24 | return true;} |
miickno | 0:eff81698b0a6 | 25 | return false; |
miickno | 0:eff81698b0a6 | 26 | } |
miickno | 0:eff81698b0a6 | 27 | |
miickno | 0:eff81698b0a6 | 28 | |
miickno | 0:eff81698b0a6 | 29 | void blink(void) |
miickno | 0:eff81698b0a6 | 30 | {for(int i=0;i<4;i++) |
miickno | 0:eff81698b0a6 | 31 | {if(i<4) |
miickno | 0:eff81698b0a6 | 32 | Led4=!Led4;}} |
miickno | 0:eff81698b0a6 | 33 | |
miickno | 0:eff81698b0a6 | 34 | void ST_Ein(void) |
miickno | 0:eff81698b0a6 | 35 | { while(true){ |
miickno | 0:eff81698b0a6 | 36 | Led1 =1; |
miickno | 0:eff81698b0a6 | 37 | blink(); |
miickno | 0:eff81698b0a6 | 38 | |
miickno | 0:eff81698b0a6 | 39 | if(CheckFlag()) |
miickno | 0:eff81698b0a6 | 40 | {state = ST_AUS; |
miickno | 0:eff81698b0a6 | 41 | return;} |
miickno | 0:eff81698b0a6 | 42 | }} |
miickno | 0:eff81698b0a6 | 43 | |
miickno | 0:eff81698b0a6 | 44 | void ST_Aus(void) |
miickno | 0:eff81698b0a6 | 45 | { |
miickno | 0:eff81698b0a6 | 46 | while(true){ |
miickno | 0:eff81698b0a6 | 47 | Led1 =0; |
miickno | 0:eff81698b0a6 | 48 | if (CheckFlag()) |
miickno | 0:eff81698b0a6 | 49 | {state = ST_EIN; |
miickno | 0:eff81698b0a6 | 50 | return;}}} |
miickno | 0:eff81698b0a6 | 51 | |
miickno | 0:eff81698b0a6 | 52 | void stateMachine() |
miickno | 0:eff81698b0a6 | 53 | { |
miickno | 0:eff81698b0a6 | 54 | switch (state) |
miickno | 0:eff81698b0a6 | 55 | {case ST_AUS:ST_Aus(); |
miickno | 0:eff81698b0a6 | 56 | break; |
miickno | 0:eff81698b0a6 | 57 | case ST_EIN: ST_Ein(); |
miickno | 0:eff81698b0a6 | 58 | break; |
miickno | 0:eff81698b0a6 | 59 | //default: ST_Error(); |
miickno | 0:eff81698b0a6 | 60 | // break; |
miickno | 0:eff81698b0a6 | 61 | }} |
miickno | 0:eff81698b0a6 | 62 | |
miickno | 0:eff81698b0a6 | 63 | |
miickno | 0:eff81698b0a6 | 64 | |
miickno | 0:eff81698b0a6 | 65 | int main() { |
miickno | 0:eff81698b0a6 | 66 | |
miickno | 0:eff81698b0a6 | 67 | SW1.rise(&rise); |
miickno | 0:eff81698b0a6 | 68 | while(1) |
miickno | 0:eff81698b0a6 | 69 | {stateMachine();} |
miickno | 0:eff81698b0a6 | 70 | |
miickno | 0:eff81698b0a6 | 71 | } |
miickno | 0:eff81698b0a6 | 72 |