State Machine Taster EIN AUS

Dependencies:   mbed

Committer:
franzpaulus
Date:
Thu Nov 08 18:27:24 2018 +0000
Revision:
0:56bf58cdba47
State Machine Taster EIN AUS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
franzpaulus 0:56bf58cdba47 1 #include "mbed.h"
franzpaulus 0:56bf58cdba47 2
franzpaulus 0:56bf58cdba47 3 DigitalOut Led1(LED1);
franzpaulus 0:56bf58cdba47 4 DigitalOut Led2(LED2);
franzpaulus 0:56bf58cdba47 5 DigitalOut Led3(LED3);
franzpaulus 0:56bf58cdba47 6 DigitalOut Led4(LED4);
franzpaulus 0:56bf58cdba47 7 InterruptIn SW1(p14);
franzpaulus 0:56bf58cdba47 8
franzpaulus 0:56bf58cdba47 9 enum nextState {ST_EIN=0, ST_AUS, ST_STATE2, ST_STATE3};
franzpaulus 0:56bf58cdba47 10 nextState state;
franzpaulus 0:56bf58cdba47 11
franzpaulus 0:56bf58cdba47 12 bool pressed = false;
franzpaulus 0:56bf58cdba47 13
franzpaulus 0:56bf58cdba47 14 void fall(void) {
franzpaulus 0:56bf58cdba47 15 wait_ms(20);
franzpaulus 0:56bf58cdba47 16 pressed = true;
franzpaulus 0:56bf58cdba47 17 }
franzpaulus 0:56bf58cdba47 18
franzpaulus 0:56bf58cdba47 19 bool CheckFlag()
franzpaulus 0:56bf58cdba47 20 {
franzpaulus 0:56bf58cdba47 21 if( pressed ) {
franzpaulus 0:56bf58cdba47 22 pressed=false;
franzpaulus 0:56bf58cdba47 23 return true;
franzpaulus 0:56bf58cdba47 24 }
franzpaulus 0:56bf58cdba47 25 return false;
franzpaulus 0:56bf58cdba47 26 }
franzpaulus 0:56bf58cdba47 27
franzpaulus 0:56bf58cdba47 28 void ST_Ein(){
franzpaulus 0:56bf58cdba47 29 while(true) {
franzpaulus 0:56bf58cdba47 30 Led1 = 1;
franzpaulus 0:56bf58cdba47 31 if(CheckFlag()) {
franzpaulus 0:56bf58cdba47 32 state = ST_AUS;
franzpaulus 0:56bf58cdba47 33 return;
franzpaulus 0:56bf58cdba47 34 }
franzpaulus 0:56bf58cdba47 35 }
franzpaulus 0:56bf58cdba47 36 }
franzpaulus 0:56bf58cdba47 37
franzpaulus 0:56bf58cdba47 38 void ST_Aus(void){
franzpaulus 0:56bf58cdba47 39 while(true) {
franzpaulus 0:56bf58cdba47 40 Led1 = 0;
franzpaulus 0:56bf58cdba47 41 if(CheckFlag()) {
franzpaulus 0:56bf58cdba47 42 state = ST_EIN;
franzpaulus 0:56bf58cdba47 43 return;
franzpaulus 0:56bf58cdba47 44 }
franzpaulus 0:56bf58cdba47 45 }
franzpaulus 0:56bf58cdba47 46 }
franzpaulus 0:56bf58cdba47 47
franzpaulus 0:56bf58cdba47 48 void ST_Error(){
franzpaulus 0:56bf58cdba47 49 while(1) {
franzpaulus 0:56bf58cdba47 50 Led3 = !Led3;
franzpaulus 0:56bf58cdba47 51 wait_ms(200);
franzpaulus 0:56bf58cdba47 52 }
franzpaulus 0:56bf58cdba47 53 }
franzpaulus 0:56bf58cdba47 54
franzpaulus 0:56bf58cdba47 55 void stateMachine()
franzpaulus 0:56bf58cdba47 56 {
franzpaulus 0:56bf58cdba47 57 switch (state)
franzpaulus 0:56bf58cdba47 58 {
franzpaulus 0:56bf58cdba47 59 case ST_EIN: ST_Ein();
franzpaulus 0:56bf58cdba47 60 break;
franzpaulus 0:56bf58cdba47 61 case ST_AUS: ST_Aus();
franzpaulus 0:56bf58cdba47 62 break;
franzpaulus 0:56bf58cdba47 63 default: ST_Error();
franzpaulus 0:56bf58cdba47 64 break;
franzpaulus 0:56bf58cdba47 65 }
franzpaulus 0:56bf58cdba47 66 }
franzpaulus 0:56bf58cdba47 67
franzpaulus 0:56bf58cdba47 68 int main()
franzpaulus 0:56bf58cdba47 69 {
franzpaulus 0:56bf58cdba47 70 printf("Hello STM\n");
franzpaulus 0:56bf58cdba47 71 SW1.fall(&fall); //.rise(&rise);
franzpaulus 0:56bf58cdba47 72 while(1) {
franzpaulus 0:56bf58cdba47 73 stateMachine();
franzpaulus 0:56bf58cdba47 74 }
franzpaulus 0:56bf58cdba47 75 }