MrHeisenberg AUG|Wings / Mbed 2 deprecated StateMachine

Dependencies:   mbed

Committer:
philipp19961
Date:
Wed Oct 22 06:52:32 2014 +0000
Revision:
1:c5769cd78933
Parent:
0:05d73097e319
Child:
2:d4fab8f3f21f
Hi Bitches

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 0:05d73097e319 23
philipp19961 0:05d73097e319 24 //volatile uint8_t count;
philipp19961 0:05d73097e319 25 volatile unsigned int count;
philipp19961 1:c5769cd78933 26 volatile unsigned int event=0;
philipp19961 1:c5769cd78933 27 volatile int led=0;
philipp19961 0:05d73097e319 28
philipp19961 0:05d73097e319 29 int ledsEin();
philipp19961 0:05d73097e319 30 int msec300TimerOn();
philipp19961 0:05d73097e319 31 int ledsTogglen();
philipp19961 1:c5769cd78933 32 int startTimer();
philipp19961 0:05d73097e319 33
philipp19961 0:05d73097e319 34
philipp19961 0:05d73097e319 35 int msec300TimerOn()
philipp19961 0:05d73097e319 36 {
philipp19961 1:c5769cd78933 37 startTimer();
philipp19961 0:05d73097e319 38 return(1);
philipp19961 0:05d73097e319 39 }
philipp19961 0:05d73097e319 40
philipp19961 1:c5769cd78933 41 int stopTimer()
philipp19961 0:05d73097e319 42 {
philipp19961 0:05d73097e319 43 led1 = 0;
philipp19961 0:05d73097e319 44 led2 = 0;
philipp19961 0:05d73097e319 45 led3 = 0;
philipp19961 0:05d73097e319 46 led4 = 0;
philipp19961 1:c5769cd78933 47 tick.detach();
philipp19961 0:05d73097e319 48 return(2);
philipp19961 0:05d73097e319 49 }
philipp19961 0:05d73097e319 50
philipp19961 0:05d73097e319 51 int ledsTogglen()
philipp19961 0:05d73097e319 52 {
philipp19961 0:05d73097e319 53 led1 = !led1;
philipp19961 0:05d73097e319 54 led2 = !led2;
philipp19961 0:05d73097e319 55 led3 = !led3;
philipp19961 0:05d73097e319 56 led4 = !led4;
philipp19961 0:05d73097e319 57 return(3);
philipp19961 0:05d73097e319 58 }
philipp19961 0:05d73097e319 59
philipp19961 0:05d73097e319 60 int ledsEin()
philipp19961 0:05d73097e319 61 {
philipp19961 0:05d73097e319 62 led1 = 1;
philipp19961 0:05d73097e319 63 led2 = 1;
philipp19961 0:05d73097e319 64 led3 = 1;
philipp19961 0:05d73097e319 65 led4 = 1;
philipp19961 0:05d73097e319 66 return(4);
philipp19961 0:05d73097e319 67 }
philipp19961 0:05d73097e319 68
philipp19961 1:c5769cd78933 69 void switchled()
philipp19961 1:c5769cd78933 70 {
philipp19961 1:c5769cd78933 71 switch(led)
philipp19961 1:c5769cd78933 72 {
philipp19961 1:c5769cd78933 73 case 0:
philipp19961 1:c5769cd78933 74 led1 = 1;
philipp19961 1:c5769cd78933 75 break;
philipp19961 1:c5769cd78933 76 case 1:
philipp19961 1:c5769cd78933 77 led1 = 0;
philipp19961 1:c5769cd78933 78 led2 = 1;
philipp19961 1:c5769cd78933 79 break;
philipp19961 1:c5769cd78933 80 case 2:
philipp19961 1:c5769cd78933 81 led2 = 0;
philipp19961 1:c5769cd78933 82 led3 = 1;
philipp19961 1:c5769cd78933 83 break;
philipp19961 1:c5769cd78933 84 case 3:
philipp19961 1:c5769cd78933 85 led3 = 0;
philipp19961 1:c5769cd78933 86 led4 = 1;
philipp19961 1:c5769cd78933 87 break;
philipp19961 1:c5769cd78933 88 case 4:
philipp19961 1:c5769cd78933 89 led4 = 0;
philipp19961 1:c5769cd78933 90 led = -1;
philipp19961 1:c5769cd78933 91 break;
philipp19961 1:c5769cd78933 92 }
philipp19961 1:c5769cd78933 93
philipp19961 1:c5769cd78933 94 led++;
philipp19961 1:c5769cd78933 95 }
philipp19961 1:c5769cd78933 96
philipp19961 1:c5769cd78933 97 int ledsSwitch()
philipp19961 1:c5769cd78933 98 {
philipp19961 1:c5769cd78933 99 tick.attach(&switchled, 0.2);
philipp19961 1:c5769cd78933 100 return(0);
philipp19961 1:c5769cd78933 101 }
philipp19961 1:c5769cd78933 102
philipp19961 0:05d73097e319 103 // interrupt SR
philipp19961 1:c5769cd78933 104 void blink()
philipp19961 0:05d73097e319 105 {
philipp19961 0:05d73097e319 106 ledsTogglen();
philipp19961 0:05d73097e319 107 }
philipp19961 0:05d73097e319 108
philipp19961 0:05d73097e319 109 // functions
philipp19961 1:c5769cd78933 110 int startTimer()
philipp19961 0:05d73097e319 111 {
philipp19961 1:c5769cd78933 112 tick.attach(&blink, 0.2);
philipp19961 1:c5769cd78933 113 return(0);
philipp19961 0:05d73097e319 114 }
philipp19961 0:05d73097e319 115
philipp19961 0:05d73097e319 116 void debounce(PinName name, unsigned char samples)
philipp19961 0:05d73097e319 117 {
philipp19961 0:05d73097e319 118 DigitalIn joystick(name);
philipp19961 0:05d73097e319 119
philipp19961 0:05d73097e319 120 for(unsigned char j = 0; j < samples; j++)
philipp19961 0:05d73097e319 121 {
philipp19961 0:05d73097e319 122 if(joystick == 1)
philipp19961 0:05d73097e319 123 j++;
philipp19961 0:05d73097e319 124 else
philipp19961 0:05d73097e319 125 j = 0;
philipp19961 0:05d73097e319 126
philipp19961 0:05d73097e319 127 if(j == samples)
philipp19961 0:05d73097e319 128 break;
philipp19961 0:05d73097e319 129 }
philipp19961 0:05d73097e319 130 }
philipp19961 0:05d73097e319 131
philipp19961 1:c5769cd78933 132 void doEvent()
philipp19961 0:05d73097e319 133 {
philipp19961 1:c5769cd78933 134 switch(event)
philipp19961 1:c5769cd78933 135 {
philipp19961 1:c5769cd78933 136 case 0:
philipp19961 1:c5769cd78933 137 led1 = 0;
philipp19961 1:c5769cd78933 138 led2 = 0;
philipp19961 1:c5769cd78933 139 led3 = 0;
philipp19961 1:c5769cd78933 140 led4 = 0;
philipp19961 1:c5769cd78933 141 break;
philipp19961 1:c5769cd78933 142 case 1:
philipp19961 1:c5769cd78933 143 led = 0;
philipp19961 1:c5769cd78933 144 ledsSwitch();
philipp19961 1:c5769cd78933 145 break;
philipp19961 1:c5769cd78933 146 case 2:
philipp19961 1:c5769cd78933 147 stopTimer();
philipp19961 1:c5769cd78933 148 ledsTogglen();
philipp19961 1:c5769cd78933 149 break;
philipp19961 1:c5769cd78933 150 case 3:
philipp19961 1:c5769cd78933 151 msec300TimerOn();
philipp19961 1:c5769cd78933 152 break;
philipp19961 1:c5769cd78933 153 case 4:
philipp19961 1:c5769cd78933 154 stopTimer();
philipp19961 1:c5769cd78933 155 event = 0;
philipp19961 1:c5769cd78933 156 break;
philipp19961 1:c5769cd78933 157 default:
philipp19961 1:c5769cd78933 158 break;
philipp19961 1:c5769cd78933 159 }
philipp19961 0:05d73097e319 160 }
philipp19961 0:05d73097e319 161
philipp19961 0:05d73097e319 162 int main()
philipp19961 1:c5769cd78933 163 {
philipp19961 1:c5769cd78933 164 while(1) {
philipp19961 1:c5769cd78933 165 if (button.rising()) {
philipp19961 1:c5769cd78933 166 event++;
philipp19961 1:c5769cd78933 167 doEvent();
philipp19961 1:c5769cd78933 168 }
philipp19961 1:c5769cd78933 169 }
philipp19961 0:05d73097e319 170 }
philipp19961 0:05d73097e319 171
philipp19961 0:05d73097e319 172