STMSchalter

Dependencies:   mbed

Committer:
Wizo
Date:
Thu Nov 15 17:18:25 2018 +0000
Revision:
0:700173727727
STMSchalter

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wizo 0:700173727727 1 #include "mbed.h"
Wizo 0:700173727727 2 #include "C12832.h"
Wizo 0:700173727727 3
Wizo 0:700173727727 4 DigitalOut Led1(LED1, 0);
Wizo 0:700173727727 5 DigitalOut Led2(LED2, 0);
Wizo 0:700173727727 6 DigitalOut Led3(LED3, 0);
Wizo 0:700173727727 7 DigitalOut Led4(LED4, 0);
Wizo 0:700173727727 8 InterruptIn SW1(p14);
Wizo 0:700173727727 9 InterruptIn SW2(p15);
Wizo 0:700173727727 10 InterruptIn SW3(p12);
Wizo 0:700173727727 11 InterruptIn SW4(p16);
Wizo 0:700173727727 12
Wizo 0:700173727727 13 //***** LCD *******
Wizo 0:700173727727 14
Wizo 0:700173727727 15 C12832 lcd(p5, p7, p6, p8, p11);
Wizo 0:700173727727 16
Wizo 0:700173727727 17 //***** VARIABLEN ******
Wizo 0:700173727727 18
Wizo 0:700173727727 19 enum State {ST_AUS=0, ST_EIN};
Wizo 0:700173727727 20 State state;
Wizo 0:700173727727 21
Wizo 0:700173727727 22 bool pressed = false;
Wizo 0:700173727727 23
Wizo 0:700173727727 24
Wizo 0:700173727727 25 //***** EREIGNISSE ******
Wizo 0:700173727727 26
Wizo 0:700173727727 27 void rise(void)
Wizo 0:700173727727 28 {
Wizo 0:700173727727 29 wait_ms(50);
Wizo 0:700173727727 30 pressed = true;
Wizo 0:700173727727 31 }
Wizo 0:700173727727 32
Wizo 0:700173727727 33 bool CheckFlag()
Wizo 0:700173727727 34 {
Wizo 0:700173727727 35 if (pressed) {
Wizo 0:700173727727 36 pressed=false;
Wizo 0:700173727727 37 return true;
Wizo 0:700173727727 38 }
Wizo 0:700173727727 39 return false;
Wizo 0:700173727727 40 }
Wizo 0:700173727727 41
Wizo 0:700173727727 42 //***** STATES ******
Wizo 0:700173727727 43
Wizo 0:700173727727 44 void ST_Aus (void)
Wizo 0:700173727727 45 {
Wizo 0:700173727727 46 //Status auf LCD
Wizo 0:700173727727 47 lcd.cls(); // löscht lcd (clear screen)
Wizo 0:700173727727 48 lcd.locate(0,0); // x-position, y-position (x: 0-128; y: 0-32)
Wizo 0:700173727727 49 lcd.printf("State: 1 (Aus)");
Wizo 0:700173727727 50 // entry
Wizo 0:700173727727 51
Wizo 0:700173727727 52 // do
Wizo 0:700173727727 53 while(true) {
Wizo 0:700173727727 54 Led1 = 0;
Wizo 0:700173727727 55
Wizo 0:700173727727 56 if(CheckFlag()) {
Wizo 0:700173727727 57 state = ST_EIN;
Wizo 0:700173727727 58
Wizo 0:700173727727 59 // exit
Wizo 0:700173727727 60 return;
Wizo 0:700173727727 61 }
Wizo 0:700173727727 62 }
Wizo 0:700173727727 63 }
Wizo 0:700173727727 64
Wizo 0:700173727727 65 void ST_Ein (void)
Wizo 0:700173727727 66 {
Wizo 0:700173727727 67 //Status auf LCD
Wizo 0:700173727727 68 lcd.cls(); // löscht lcd (clear screen)
Wizo 0:700173727727 69 lcd.locate(0,0); // x-position, y-position (x: 0-128; y: 0-32)
Wizo 0:700173727727 70 lcd.printf("State: 2 (Ein)");
Wizo 0:700173727727 71
Wizo 0:700173727727 72 // entry
Wizo 0:700173727727 73 Led4 = 1;
Wizo 0:700173727727 74 wait_ms(200);
Wizo 0:700173727727 75 Led4 = 0;
Wizo 0:700173727727 76 wait_ms(200);
Wizo 0:700173727727 77 Led4 = 1;
Wizo 0:700173727727 78 wait_ms(200);
Wizo 0:700173727727 79 Led4 = 0;
Wizo 0:700173727727 80 wait_ms(200);
Wizo 0:700173727727 81 // do
Wizo 0:700173727727 82 while(true) {
Wizo 0:700173727727 83 Led1 = 1;
Wizo 0:700173727727 84
Wizo 0:700173727727 85 if(CheckFlag()) {
Wizo 0:700173727727 86 state = ST_AUS;
Wizo 0:700173727727 87
Wizo 0:700173727727 88 // exit
Wizo 0:700173727727 89 return;
Wizo 0:700173727727 90 }
Wizo 0:700173727727 91 }
Wizo 0:700173727727 92
Wizo 0:700173727727 93 }
Wizo 0:700173727727 94
Wizo 0:700173727727 95 void ST_Error (void)
Wizo 0:700173727727 96 {
Wizo 0:700173727727 97 //Status auf LCD
Wizo 0:700173727727 98 lcd.cls(); // löscht lcd (clear screen)
Wizo 0:700173727727 99 lcd.locate(0,0); // x-position, y-position (x: 0-128; y: 0-32)
Wizo 0:700173727727 100 lcd.printf("State: ERROR");
Wizo 0:700173727727 101 return;
Wizo 0:700173727727 102 }
Wizo 0:700173727727 103
Wizo 0:700173727727 104 void stateMachine()
Wizo 0:700173727727 105 {
Wizo 0:700173727727 106 switch (state)
Wizo 0:700173727727 107 {
Wizo 0:700173727727 108 case ST_AUS: ST_Aus();
Wizo 0:700173727727 109 break;
Wizo 0:700173727727 110 case ST_EIN: ST_Ein();
Wizo 0:700173727727 111 break;
Wizo 0:700173727727 112 default: ST_Error(); // sollte nicht auftreten :-)
Wizo 0:700173727727 113 break;
Wizo 0:700173727727 114 }
Wizo 0:700173727727 115 }
Wizo 0:700173727727 116
Wizo 0:700173727727 117
Wizo 0:700173727727 118
Wizo 0:700173727727 119 int main()
Wizo 0:700173727727 120 {
Wizo 0:700173727727 121 SW1.rise(&rise); //.fall(&fall);
Wizo 0:700173727727 122 state = ST_AUS;
Wizo 0:700173727727 123 while(true){
Wizo 0:700173727727 124 stateMachine();
Wizo 0:700173727727 125 }
Wizo 0:700173727727 126
Wizo 0:700173727727 127
Wizo 0:700173727727 128 }