
STMSchalter
main.cpp@0:700173727727, 2018-11-15 (annotated)
- Committer:
- Wizo
- Date:
- Thu Nov 15 17:18:25 2018 +0000
- Revision:
- 0:700173727727
STMSchalter
Who changed what in which revision?
User | Revision | Line number | New 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 | } |