STM_Schalter

Dependencies:   mbed

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?

UserRevisionLine numberNew 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