Markus Reiner
/
testAnifOhneClass
ohne class
main.cpp@0:2acc9e1d4fff, 2018-11-29 (annotated)
- Committer:
- mexx
- Date:
- Thu Nov 29 17:40:31 2018 +0000
- Revision:
- 0:2acc9e1d4fff
- Child:
- 1:580bd2d56f39
ohne class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mexx | 0:2acc9e1d4fff | 1 | #include "mbed.h" |
mexx | 0:2acc9e1d4fff | 2 | |
mexx | 0:2acc9e1d4fff | 3 | DigitalIn btn(P14); // für den Test ist nur dieser erforderlich |
mexx | 0:2acc9e1d4fff | 4 | |
mexx | 0:2acc9e1d4fff | 5 | |
mexx | 0:2acc9e1d4fff | 6 | BusOut BoardLeds ( LED1 , LED2, LED3, LED4); |
mexx | 0:2acc9e1d4fff | 7 | |
mexx | 0:2acc9e1d4fff | 8 | Ticker tickerflipper; // Ticker für blinken der LED |
mexx | 0:2acc9e1d4fff | 9 | volatile int blinkCounter=0; // Volatile, damit es nicht auf unterschiedlichen Cores ausgeführt wird |
mexx | 0:2acc9e1d4fff | 10 | |
mexx | 0:2acc9e1d4fff | 11 | enum State {ST_LEDAUS=0, ST_LEDEIN}; |
mexx | 0:2acc9e1d4fff | 12 | State state; |
mexx | 0:2acc9e1d4fff | 13 | |
mexx | 0:2acc9e1d4fff | 14 | bool pressed = false; |
mexx | 0:2acc9e1d4fff | 15 | |
mexx | 0:2acc9e1d4fff | 16 | void flipper() // |
mexx | 0:2acc9e1d4fff | 17 | { |
mexx | 0:2acc9e1d4fff | 18 | blinkCounter++; // Variable die hochgezählt wird um die LED 2 mal blinken zu lassen |
mexx | 0:2acc9e1d4fff | 19 | Led4 = !Led4; // umschalten der LED |
mexx | 0:2acc9e1d4fff | 20 | } |
mexx | 0:2acc9e1d4fff | 21 | |
mexx | 0:2acc9e1d4fff | 22 | |
mexx | 0:2acc9e1d4fff | 23 | void rise(void) |
mexx | 0:2acc9e1d4fff | 24 | { |
mexx | 0:2acc9e1d4fff | 25 | wait_ms(100); // Entprellung der Taste, bei mir 100ms da der Taster furchtbar prellt... |
mexx | 0:2acc9e1d4fff | 26 | pressed = true; // Umschalten auf WAHR, es wurde gedrückt |
mexx | 0:2acc9e1d4fff | 27 | } |
mexx | 0:2acc9e1d4fff | 28 | |
mexx | 0:2acc9e1d4fff | 29 | bool CheckFlag() |
mexx | 0:2acc9e1d4fff | 30 | { |
mexx | 0:2acc9e1d4fff | 31 | if (pressed) // Abfrage ob pressed WAHR ist |
mexx | 0:2acc9e1d4fff | 32 | { |
mexx | 0:2acc9e1d4fff | 33 | pressed=false; // Rücksetzen wieder auf Status FALSCH |
mexx | 0:2acc9e1d4fff | 34 | return true; // Rückgabe bei CheckFlag das WAHR ist |
mexx | 0:2acc9e1d4fff | 35 | } |
mexx | 0:2acc9e1d4fff | 36 | return false; // Wenn nicht pressed Wahr ist wird CheckFlag als FALSCH zurück gegeben |
mexx | 0:2acc9e1d4fff | 37 | } |
mexx | 0:2acc9e1d4fff | 38 | |
mexx | 0:2acc9e1d4fff | 39 | |
mexx | 0:2acc9e1d4fff | 40 | void ST_LedAus (void) |
mexx | 0:2acc9e1d4fff | 41 | { |
mexx | 0:2acc9e1d4fff | 42 | |
mexx | 0:2acc9e1d4fff | 43 | |
mexx | 0:2acc9e1d4fff | 44 | |
mexx | 0:2acc9e1d4fff | 45 | printf("State: 1 (Aus)"); // Ausgabe auf der seriellen Console |
mexx | 0:2acc9e1d4fff | 46 | |
mexx | 0:2acc9e1d4fff | 47 | //_______________entry____________________\\ |
mexx | 0:2acc9e1d4fff | 48 | |
mexx | 0:2acc9e1d4fff | 49 | //_______________do_______________________\\ |
mexx | 0:2acc9e1d4fff | 50 | |
mexx | 0:2acc9e1d4fff | 51 | while(true) |
mexx | 0:2acc9e1d4fff | 52 | { |
mexx | 0:2acc9e1d4fff | 53 | Led1 = 0; // Led1 wird auf LOW gesetzt |
mexx | 0:2acc9e1d4fff | 54 | if(CheckFlag()) // Ist CheckFlag WAHR dann |
mexx | 0:2acc9e1d4fff | 55 | { |
mexx | 0:2acc9e1d4fff | 56 | state = ST_LEDEIN; // Wechsel auf Status EIN |
mexx | 0:2acc9e1d4fff | 57 | |
mexx | 0:2acc9e1d4fff | 58 | //______________exit_______________________\\ |
mexx | 0:2acc9e1d4fff | 59 | |
mexx | 0:2acc9e1d4fff | 60 | return; |
mexx | 0:2acc9e1d4fff | 61 | } |
mexx | 0:2acc9e1d4fff | 62 | } |
mexx | 0:2acc9e1d4fff | 63 | } |
mexx | 0:2acc9e1d4fff | 64 | |
mexx | 0:2acc9e1d4fff | 65 | |
mexx | 0:2acc9e1d4fff | 66 | void ST_LedEin (void) |
mexx | 0:2acc9e1d4fff | 67 | { |
mexx | 0:2acc9e1d4fff | 68 | |
mexx | 0:2acc9e1d4fff | 69 | printf("State: 2 (Ein)"); // Ausgabe auf der seriellen Console |
mexx | 0:2acc9e1d4fff | 70 | |
mexx | 0:2acc9e1d4fff | 71 | |
mexx | 0:2acc9e1d4fff | 72 | //____________aufruf um die Led blinken zu lassen____\\ |
mexx | 0:2acc9e1d4fff | 73 | tickerflipper.attach(&flipper, 0.3); // the address of the function to be attached (flip) and the interval (0,3 seconds) |
mexx | 0:2acc9e1d4fff | 74 | |
mexx | 0:2acc9e1d4fff | 75 | while(true) // Dauerschleife |
mexx | 0:2acc9e1d4fff | 76 | { |
mexx | 0:2acc9e1d4fff | 77 | if ( blinkCounter >= 4) break;// Ausbruch aus der Whileschleife wenn der blinkCounter größer gleich 4 ist |
mexx | 0:2acc9e1d4fff | 78 | } |
mexx | 0:2acc9e1d4fff | 79 | tickerflipper.detach(); // Tiker deaktivieren |
mexx | 0:2acc9e1d4fff | 80 | blinkCounter=0; // blinkCounter rücksetzen auf 0 damit es wieder von vorne losgehen kann |
mexx | 0:2acc9e1d4fff | 81 | |
mexx | 0:2acc9e1d4fff | 82 | |
mexx | 0:2acc9e1d4fff | 83 | //_____________do______________\\ |
mexx | 0:2acc9e1d4fff | 84 | |
mexx | 0:2acc9e1d4fff | 85 | while(true) { |
mexx | 0:2acc9e1d4fff | 86 | Led1 = 1; |
mexx | 0:2acc9e1d4fff | 87 | |
mexx | 0:2acc9e1d4fff | 88 | if(CheckFlag()) |
mexx | 0:2acc9e1d4fff | 89 | { |
mexx | 0:2acc9e1d4fff | 90 | state = ST_LEDAUS; |
mexx | 0:2acc9e1d4fff | 91 | |
mexx | 0:2acc9e1d4fff | 92 | //_______________exit______________\\ |
mexx | 0:2acc9e1d4fff | 93 | |
mexx | 0:2acc9e1d4fff | 94 | return; |
mexx | 0:2acc9e1d4fff | 95 | } |
mexx | 0:2acc9e1d4fff | 96 | } |
mexx | 0:2acc9e1d4fff | 97 | } |
mexx | 0:2acc9e1d4fff | 98 | |
mexx | 0:2acc9e1d4fff | 99 | void ST_Error (void) |
mexx | 0:2acc9e1d4fff | 100 | { |
mexx | 0:2acc9e1d4fff | 101 | printf("State: ERROR!!!"); |
mexx | 0:2acc9e1d4fff | 102 | return; |
mexx | 0:2acc9e1d4fff | 103 | } |
mexx | 0:2acc9e1d4fff | 104 | |
mexx | 0:2acc9e1d4fff | 105 | |
mexx | 0:2acc9e1d4fff | 106 | void stateMachine() |
mexx | 0:2acc9e1d4fff | 107 | { |
mexx | 0:2acc9e1d4fff | 108 | switch (state) |
mexx | 0:2acc9e1d4fff | 109 | { |
mexx | 0:2acc9e1d4fff | 110 | case ST_LEDAUS: ST_LedAus(); |
mexx | 0:2acc9e1d4fff | 111 | break; |
mexx | 0:2acc9e1d4fff | 112 | case ST_LEDEIN: ST_LedEin(); |
mexx | 0:2acc9e1d4fff | 113 | break; |
mexx | 0:2acc9e1d4fff | 114 | default: ST_Error(); // sollte nicht auftreten :-) |
mexx | 0:2acc9e1d4fff | 115 | break; |
mexx | 0:2acc9e1d4fff | 116 | } |
mexx | 0:2acc9e1d4fff | 117 | } |
mexx | 0:2acc9e1d4fff | 118 | |
mexx | 0:2acc9e1d4fff | 119 | |
mexx | 0:2acc9e1d4fff | 120 | |
mexx | 0:2acc9e1d4fff | 121 | int main() |
mexx | 0:2acc9e1d4fff | 122 | { |
mexx | 0:2acc9e1d4fff | 123 | SW1.rise(&rise); //.fall(&fall); |
mexx | 0:2acc9e1d4fff | 124 | state = ST_LEDAUS; |
mexx | 0:2acc9e1d4fff | 125 | while(true) |
mexx | 0:2acc9e1d4fff | 126 | { |
mexx | 0:2acc9e1d4fff | 127 | stateMachine(); |
mexx | 0:2acc9e1d4fff | 128 | } |
mexx | 0:2acc9e1d4fff | 129 | } |