MrHeisenberg AUG|Wings / Mbed 2 deprecated StateMachine

Dependencies:   mbed

Committer:
philipp19961
Date:
Wed Nov 05 07:40:17 2014 +0000
Revision:
3:c048b13bc1d0
Parent:
2:d4fab8f3f21f
Child:
4:612095337fb0
New StateMachine

Who changed what in which revision?

UserRevisionLine numberNew contents of line
philipp19961 0:05d73097e319 1 #include "mbed.h"
philipp19961 1:c5769cd78933 2 #include "DebouncedIn.h"
philipp19961 0:05d73097e319 3
philipp19961 0:05d73097e319 4 Ticker tick;
philipp19961 0:05d73097e319 5 DigitalOut led1(LED1);
philipp19961 0:05d73097e319 6 DigitalOut led2(LED2);
philipp19961 0:05d73097e319 7 DigitalOut led3(LED3);
philipp19961 0:05d73097e319 8 DigitalOut led4(LED4);
philipp19961 0:05d73097e319 9
philipp19961 1:c5769cd78933 10 DebouncedIn button(p12);
philipp19961 0:05d73097e319 11
philipp19961 0:05d73097e319 12 // Zum Schalten: 1 Taster PINA PA0
philipp19961 0:05d73097e319 13 // 1. Funktion
philipp19961 0:05d73097e319 14 // Start-Taste 1x betätigen:
philipp19961 0:05d73097e319 15 // Dauerlicht aller 4 LEDs
philipp19961 0:05d73097e319 16 // 2. Funktion
philipp19961 0:05d73097e319 17 // Start-Taste ein 2.mal betätigen:
philipp19961 0:05d73097e319 18 // LEDs blinken im ca. 400 Millisekunden-Takt; 200 msec Ein, 200 msec Aus
philipp19961 0:05d73097e319 19 // Ausschalten des Rücklichts
philipp19961 0:05d73097e319 20 // Die Start-Taste ein 3.mal betätigen:
philipp19961 0:05d73097e319 21 // Alle LEDs aus.
philipp19961 0:05d73097e319 22
philipp19961 3:c048b13bc1d0 23 int ledsEin();
philipp19961 3:c048b13bc1d0 24 int ledsBlinkTimer();
philipp19961 3:c048b13bc1d0 25 int ledsAus();
philipp19961 3:c048b13bc1d0 26 int ledsSwitchTimer();
philipp19961 3:c048b13bc1d0 27 int stopTimer();
philipp19961 3:c048b13bc1d0 28
philipp19961 3:c048b13bc1d0 29 int(*action[5])()= {ledsSwitchTimer, stopTimer, ledsEin, ledsBlinkTimer, ledsAus };
philipp19961 3:c048b13bc1d0 30
philipp19961 3:c048b13bc1d0 31 volatile int event = -1;
philipp19961 1:c5769cd78933 32 volatile int led=0;
philipp19961 0:05d73097e319 33
philipp19961 2:d4fab8f3f21f 34 void switchled();
philipp19961 2:d4fab8f3f21f 35 void blinkled();
philipp19961 0:05d73097e319 36
philipp19961 3:c048b13bc1d0 37 int stopTimer()
philipp19961 0:05d73097e319 38 {
philipp19961 0:05d73097e319 39 led1 = 0;
philipp19961 0:05d73097e319 40 led2 = 0;
philipp19961 0:05d73097e319 41 led3 = 0;
philipp19961 0:05d73097e319 42 led4 = 0;
philipp19961 1:c5769cd78933 43 tick.detach();
philipp19961 3:c048b13bc1d0 44 event++;
philipp19961 3:c048b13bc1d0 45 (action[event])();
philipp19961 3:c048b13bc1d0 46
philipp19961 3:c048b13bc1d0 47 return 0;
philipp19961 0:05d73097e319 48 }
philipp19961 0:05d73097e319 49
philipp19961 3:c048b13bc1d0 50 int ledsBlinkTimer()
philipp19961 3:c048b13bc1d0 51 {
philipp19961 3:c048b13bc1d0 52 tick.attach(&blinkled, 0.2);
philipp19961 3:c048b13bc1d0 53 return 0;
philipp19961 3:c048b13bc1d0 54 }
philipp19961 3:c048b13bc1d0 55
philipp19961 3:c048b13bc1d0 56 int ledsEin()
philipp19961 2:d4fab8f3f21f 57 {
philipp19961 2:d4fab8f3f21f 58 led1 = 1;
philipp19961 2:d4fab8f3f21f 59 led2 = 1;
philipp19961 2:d4fab8f3f21f 60 led3 = 1;
philipp19961 2:d4fab8f3f21f 61 led4 = 1;
philipp19961 3:c048b13bc1d0 62 return 0;
philipp19961 3:c048b13bc1d0 63 }
philipp19961 3:c048b13bc1d0 64
philipp19961 3:c048b13bc1d0 65 int ledsAus()
philipp19961 3:c048b13bc1d0 66 {
philipp19961 3:c048b13bc1d0 67 tick.detach();
philipp19961 3:c048b13bc1d0 68 event = -1;
philipp19961 3:c048b13bc1d0 69 led1 = 0;
philipp19961 3:c048b13bc1d0 70 led2 = 0;
philipp19961 3:c048b13bc1d0 71 led3 = 0;
philipp19961 3:c048b13bc1d0 72 led4 = 0;
philipp19961 3:c048b13bc1d0 73 return 0;
philipp19961 3:c048b13bc1d0 74 }
philipp19961 3:c048b13bc1d0 75
philipp19961 3:c048b13bc1d0 76 int ledsSwitchTimer()
philipp19961 3:c048b13bc1d0 77 {
philipp19961 3:c048b13bc1d0 78 tick.attach(&switchled, 0.2);
philipp19961 3:c048b13bc1d0 79 return 0;
philipp19961 2:d4fab8f3f21f 80 }
philipp19961 2:d4fab8f3f21f 81
philipp19961 2:d4fab8f3f21f 82 void ledsTogglen()
philipp19961 0:05d73097e319 83 {
philipp19961 0:05d73097e319 84 led1 = !led1;
philipp19961 0:05d73097e319 85 led2 = !led2;
philipp19961 0:05d73097e319 86 led3 = !led3;
philipp19961 0:05d73097e319 87 led4 = !led4;
philipp19961 0:05d73097e319 88 }
philipp19961 0:05d73097e319 89
philipp19961 1:c5769cd78933 90 void switchled()
philipp19961 1:c5769cd78933 91 {
philipp19961 1:c5769cd78933 92 switch(led)
philipp19961 1:c5769cd78933 93 {
philipp19961 1:c5769cd78933 94 case 0:
philipp19961 1:c5769cd78933 95 led1 = 1;
philipp19961 1:c5769cd78933 96 break;
philipp19961 1:c5769cd78933 97 case 1:
philipp19961 1:c5769cd78933 98 led1 = 0;
philipp19961 1:c5769cd78933 99 led2 = 1;
philipp19961 1:c5769cd78933 100 break;
philipp19961 1:c5769cd78933 101 case 2:
philipp19961 1:c5769cd78933 102 led2 = 0;
philipp19961 1:c5769cd78933 103 led3 = 1;
philipp19961 1:c5769cd78933 104 break;
philipp19961 1:c5769cd78933 105 case 3:
philipp19961 1:c5769cd78933 106 led3 = 0;
philipp19961 1:c5769cd78933 107 led4 = 1;
philipp19961 1:c5769cd78933 108 break;
philipp19961 1:c5769cd78933 109 case 4:
philipp19961 1:c5769cd78933 110 led4 = 0;
philipp19961 1:c5769cd78933 111 led = -1;
philipp19961 1:c5769cd78933 112 break;
philipp19961 1:c5769cd78933 113 }
philipp19961 1:c5769cd78933 114
philipp19961 1:c5769cd78933 115 led++;
philipp19961 1:c5769cd78933 116 }
philipp19961 1:c5769cd78933 117
philipp19961 2:d4fab8f3f21f 118 void blinkled()
philipp19961 0:05d73097e319 119 {
philipp19961 0:05d73097e319 120 ledsTogglen();
philipp19961 0:05d73097e319 121 }
philipp19961 0:05d73097e319 122
philipp19961 0:05d73097e319 123 int main()
philipp19961 1:c5769cd78933 124 {
philipp19961 1:c5769cd78933 125 while(1) {
philipp19961 1:c5769cd78933 126 if (button.rising()) {
philipp19961 1:c5769cd78933 127 event++;
philipp19961 3:c048b13bc1d0 128 (action[event])();
philipp19961 1:c5769cd78933 129 }
philipp19961 1:c5769cd78933 130 }
philipp19961 0:05d73097e319 131 }
philipp19961 0:05d73097e319 132
philipp19961 0:05d73097e319 133