State machine with EMG functions and parameters

Dependencies:   biquadFilter FastPWM HIDScope MODSERIAL mbed

Fork of StateMachine by Tommie Verouden

Committer:
tverouden
Date:
Wed Oct 31 16:30:27 2018 +0000
Revision:
6:f32352bc5078
Parent:
5:04b26b2f536a
Child:
7:ef5966469621
Emergency button implemented in main & several comments added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tverouden 0:c0c35b95765f 1 // ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ PREPARATION ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
tverouden 0:c0c35b95765f 2 // Libraries
tverouden 0:c0c35b95765f 3 #include "mbed.h"
tverouden 2:d70795e4e0bf 4 #include "BiQuad.h"
tverouden 0:c0c35b95765f 5 #include "FastPWM.h"
tverouden 0:c0c35b95765f 6 #include "HIDScope.h"
tverouden 0:c0c35b95765f 7 #include "MODSERIAL.h"
tverouden 0:c0c35b95765f 8
tverouden 0:c0c35b95765f 9 // Inputs & outputs
tverouden 6:f32352bc5078 10 DigitalOut ledRed(LED_RED,1); // red LED K64F
tverouden 6:f32352bc5078 11 DigitalOut ledGreen(LED_GREEN,1); // green LED K64F
tverouden 6:f32352bc5078 12 DigitalOut ledBlue(LED_BLUE,1); // blue LED K64F
tverouden 4:5ce2c8864908 13 InterruptIn buttonBio1(D0); // button 1 BioRobotics shield
tverouden 4:5ce2c8864908 14 InterruptIn buttonBio2(D1); // button 2 BioRobotics shield
tverouden 0:c0c35b95765f 15 InterruptIn buttonK64F(SW3); // button on K64F
tverouden 0:c0c35b95765f 16 InterruptIn emergencybutton(SW2); // emergency button on K64F
tverouden 0:c0c35b95765f 17
tverouden 4:5ce2c8864908 18 MODSERIAL pc(USBTX, USBRX); // communication with pc
tverouden 4:5ce2c8864908 19
tverouden 0:c0c35b95765f 20 // Define & initialise state machine
tverouden 0:c0c35b95765f 21 enum states { waiting, calibratingMotors, calibratingEMGx, calibratingEMGy,
tverouden 5:04b26b2f536a 22 homing, operating, flipping, failing, demoing
tverouden 2:d70795e4e0bf 23 };
tverouden 0:c0c35b95765f 24 states currentState = waiting; // start in waiting mode
tverouden 2:d70795e4e0bf 25 bool changeState = true; // initialise the first state
tverouden 2:d70795e4e0bf 26
tverouden 3:9c63fc5f157e 27
tverouden 3:9c63fc5f157e 28
tverouden 4:5ce2c8864908 29 // ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ FUNCTIONS ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
tverouden 6:f32352bc5078 30 // ============================ GENERAL FUNCTIONS =============================
tverouden 6:f32352bc5078 31 void stopProgram(void)
tverouden 6:f32352bc5078 32 {
tverouden 6:f32352bc5078 33 // Error message
tverouden 6:f32352bc5078 34 pc.printf("[ERROR] emergency button pressed\r\n");
tverouden 6:f32352bc5078 35 currentState = failing; // change to state
tverouden 6:f32352bc5078 36 changeState = true; // next loop, switch states
tverouden 6:f32352bc5078 37 }
tverouden 6:f32352bc5078 38 // ============================ MOTOR FUNCTIONS ==============================
tverouden 4:5ce2c8864908 39
tverouden 4:5ce2c8864908 40
tverouden 4:5ce2c8864908 41 // ============================= EMG FUNCTIONS ===============================
tverouden 4:5ce2c8864908 42
tverouden 4:5ce2c8864908 43
tverouden 2:d70795e4e0bf 44 // ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ STATE MACHINE ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
tverouden 4:5ce2c8864908 45 void stateMachine(void) // Moet niet elke staat naar de failure mode kunnen komen met het emergency knopoje?
tverouden 3:9c63fc5f157e 46 {
tverouden 5:04b26b2f536a 47 switch (currentState) { // determine which state Odin is in // Van een aantal if statements moeten de conditions nog bepaald worden, niet vergeten
tverouden 3:9c63fc5f157e 48
tverouden 4:5ce2c8864908 49 // ============================== WAITING MODE ===============================
tverouden 3:9c63fc5f157e 50 case waiting:
tverouden 4:5ce2c8864908 51 // ------------------------ initialisation --------------------------
tverouden 4:5ce2c8864908 52 if (changeState) { // when entering the state
tverouden 4:5ce2c8864908 53 pc.printf("[MODE] waiting...\r\n");
tverouden 5:04b26b2f536a 54 // print current state
tverouden 4:5ce2c8864908 55 changeState = false; // stay in this state
tverouden 4:5ce2c8864908 56
tverouden 4:5ce2c8864908 57 // Actions when entering state
tverouden 4:5ce2c8864908 58 /* */
tverouden 4:5ce2c8864908 59
tverouden 4:5ce2c8864908 60 }
tverouden 4:5ce2c8864908 61 // ----------------------------- action ------------------------------
tverouden 4:5ce2c8864908 62 // Actions for each loop iteration
tverouden 4:5ce2c8864908 63 /* */
tverouden 4:5ce2c8864908 64
tverouden 4:5ce2c8864908 65 // --------------------------- transition ----------------------------
tverouden 4:5ce2c8864908 66 // Transition condition #1: with a button press, enter motor
tverouden 4:5ce2c8864908 67 // calibration mode
tverouden 4:5ce2c8864908 68 if (emergencybutton == true) { // Waarom drukken we op de noodknop om te beginnen? Lijkt me raar
tverouden 6:f32352bc5078 69 // Actions when leaving state // Is hier niet de resetknop voor bedoeld?
tverouden 4:5ce2c8864908 70 /* */
tverouden 5:04b26b2f536a 71
tverouden 4:5ce2c8864908 72 currentState = calibratingMotors; // change to state
tverouden 4:5ce2c8864908 73 changeState = true; // next loop, switch states
tverouden 4:5ce2c8864908 74 }
tverouden 4:5ce2c8864908 75 break; // end case
tverouden 4:5ce2c8864908 76
tverouden 4:5ce2c8864908 77 // ========================= MOTOR CALIBRATION MODE ==========================
tverouden 4:5ce2c8864908 78 case calibratingMotors:
tverouden 4:5ce2c8864908 79 // ------------------------- initialisation --------------------------
tverouden 4:5ce2c8864908 80 if (changeState) { // when entering the state
tverouden 4:5ce2c8864908 81 pc.printf("[MODE] calibrating motors...r\n");
tverouden 5:04b26b2f536a 82 // print current state
tverouden 4:5ce2c8864908 83 changeState = false; // stay in this state
tverouden 4:5ce2c8864908 84
tverouden 4:5ce2c8864908 85 // Actions when entering state
tverouden 4:5ce2c8864908 86 /* */
tverouden 4:5ce2c8864908 87
tverouden 4:5ce2c8864908 88 }
tverouden 4:5ce2c8864908 89 // ----------------------------- action ------------------------------
tverouden 5:04b26b2f536a 90 // Actions for each loop iteration
tverouden 5:04b26b2f536a 91 /* */
tverouden 4:5ce2c8864908 92
tverouden 4:5ce2c8864908 93 // --------------------------- transition ----------------------------
tverouden 4:5ce2c8864908 94 // Transition condition #1: after 3 sec in state && all motor // Als vóór het einde van de 3 seconden alle motoren al snelheid 0 hebben, zitten ze zo dus door te draaien terwijl dat niet kan
tverouden 4:5ce2c8864908 95 // velocities zero, start calibrating EMG-x // dat lijkt me niet de bedoeling
tverouden 4:5ce2c8864908 96 if (1) {
tverouden 5:04b26b2f536a 97 // Actions when leaving state
tverouden 4:5ce2c8864908 98 /* */
tverouden 5:04b26b2f536a 99
tverouden 4:5ce2c8864908 100 currentState = calibratingMotors; // change to state
tverouden 4:5ce2c8864908 101 changeState = true; // next loop, switch states
tverouden 4:5ce2c8864908 102 }
tverouden 4:5ce2c8864908 103 break; // end case
tverouden 4:5ce2c8864908 104
tverouden 4:5ce2c8864908 105 // ================== EMG 1 (X-DIRECTION) CALIBRATION MODE ===================
tverouden 4:5ce2c8864908 106 case calibratingEMGx:
tverouden 4:5ce2c8864908 107 // ------------------------- initialisation --------------------------
tverouden 3:9c63fc5f157e 108 if (changeState) { // when entering the state
tverouden 4:5ce2c8864908 109 pc.printf("[MODE] calibrating EMG 1 (x-direction)...\r\n");
tverouden 5:04b26b2f536a 110 // print current state
tverouden 4:5ce2c8864908 111 changeState = false; // stay in this state
tverouden 4:5ce2c8864908 112
tverouden 4:5ce2c8864908 113 // Actions when entering state
tverouden 4:5ce2c8864908 114 /* */
tverouden 4:5ce2c8864908 115
tverouden 4:5ce2c8864908 116 }
tverouden 4:5ce2c8864908 117 // ----------------------------- action ------------------------------
tverouden 5:04b26b2f536a 118 // Actions for each loop iteration
tverouden 5:04b26b2f536a 119 /* */
tverouden 4:5ce2c8864908 120
tverouden 4:5ce2c8864908 121 // --------------------------- transition ----------------------------
tverouden 4:5ce2c8864908 122 // Transition condition #1: after 5 sec in state && relaxation
tverouden 4:5ce2c8864908 123 if (1) {
tverouden 4:5ce2c8864908 124 // Actions when leaving state
tverouden 4:5ce2c8864908 125 /* */
tverouden 5:04b26b2f536a 126
tverouden 4:5ce2c8864908 127 currentState = calibratingEMGy; // change to state
tverouden 4:5ce2c8864908 128 changeState = true; // next loop, switch states
tverouden 4:5ce2c8864908 129 }
tverouden 4:5ce2c8864908 130 break; // end case
tverouden 4:5ce2c8864908 131
tverouden 4:5ce2c8864908 132 // ================== EMG 2 (Y-DIRECTION) CALIBRATION MODE ===================
tverouden 4:5ce2c8864908 133 case calibratingEMGy:
tverouden 4:5ce2c8864908 134 // ------------------------- initialisation --------------------------
tverouden 4:5ce2c8864908 135 if (changeState) { // when entering the state
tverouden 4:5ce2c8864908 136 pc.printf("[MODE] calibrating EMG 2 (y-direction)...\r\n");
tverouden 5:04b26b2f536a 137 // print current state
tverouden 4:5ce2c8864908 138 changeState = false; // stay in this state
tverouden 4:5ce2c8864908 139
tverouden 4:5ce2c8864908 140 // Actions when entering state
tverouden 4:5ce2c8864908 141 /* */
tverouden 4:5ce2c8864908 142
tverouden 4:5ce2c8864908 143 }
tverouden 4:5ce2c8864908 144 // ----------------------------- action ------------------------------
tverouden 5:04b26b2f536a 145 // Actions for each loop iteration
tverouden 5:04b26b2f536a 146 /* */
tverouden 4:5ce2c8864908 147
tverouden 4:5ce2c8864908 148 // --------------------------- transition ----------------------------
tverouden 4:5ce2c8864908 149 // Transition condition #1: after 5 sec in state && relaxation
tverouden 4:5ce2c8864908 150 if (1) {
tverouden 4:5ce2c8864908 151 // Actions when leaving state
tverouden 4:5ce2c8864908 152 /* */
tverouden 5:04b26b2f536a 153
tverouden 4:5ce2c8864908 154 currentState = homing; // change to state
tverouden 4:5ce2c8864908 155 changeState = true; // next loop, switch states
tverouden 5:04b26b2f536a 156 }
tverouden 5:04b26b2f536a 157 break; // end case
tverouden 4:5ce2c8864908 158
tverouden 4:5ce2c8864908 159 // ============================== HOMING MODE ================================
tverouden 4:5ce2c8864908 160 case homing:
tverouden 4:5ce2c8864908 161 // ------------------------- initialisation --------------------------
tverouden 4:5ce2c8864908 162 if (changeState) { // when entering the state
tverouden 4:5ce2c8864908 163 pc.printf("[MODE] homing...\r\n");
tverouden 5:04b26b2f536a 164 // print current state
tverouden 4:5ce2c8864908 165 changeState = false; // stay in this state
tverouden 4:5ce2c8864908 166
tverouden 4:5ce2c8864908 167
tverouden 4:5ce2c8864908 168 // Actions when entering state
tverouden 4:5ce2c8864908 169 /* */
tverouden 4:5ce2c8864908 170
tverouden 4:5ce2c8864908 171 }
tverouden 4:5ce2c8864908 172 // ----------------------------- action ------------------------------
tverouden 5:04b26b2f536a 173 // Actions for each loop iteration
tverouden 5:04b26b2f536a 174 /* */
tverouden 4:5ce2c8864908 175
tverouden 4:5ce2c8864908 176 // --------------------------- transition ----------------------------
tverouden 4:5ce2c8864908 177 // Transition condition #1: with button press, enter demo mode
tverouden 4:5ce2c8864908 178 if (buttonBio1 == true) { // Het is niet nodig om hier ook nog "&& currentState == homing" toe te voegen, want hij bereikt dit stuk code alleen in homing mode
tverouden 4:5ce2c8864908 179 // Actions when leaving state
tverouden 4:5ce2c8864908 180 /* */
tverouden 5:04b26b2f536a 181
tverouden 4:5ce2c8864908 182 currentState = demoing; // change to state
tverouden 4:5ce2c8864908 183 changeState = true; // next loop, switch states
tverouden 4:5ce2c8864908 184 }
tverouden 4:5ce2c8864908 185 // Transition condition #2: with button press, enter operation mode
tverouden 4:5ce2c8864908 186 if (buttonBio2 == true) {
tverouden 4:5ce2c8864908 187 // Actions when leaving state
tverouden 4:5ce2c8864908 188 /* */
tverouden 5:04b26b2f536a 189
tverouden 4:5ce2c8864908 190 currentState = operating; // change to state
tverouden 4:5ce2c8864908 191 changeState = true; // next loop, switch states
tverouden 5:04b26b2f536a 192 }
tverouden 4:5ce2c8864908 193 break; // end case
tverouden 4:5ce2c8864908 194
tverouden 4:5ce2c8864908 195 // ============================= OPERATING MODE ==============================
tverouden 4:5ce2c8864908 196 case operating:
tverouden 4:5ce2c8864908 197 // ------------------------- initialisation --------------------------
tverouden 4:5ce2c8864908 198 if (changeState) { // when entering the state
tverouden 4:5ce2c8864908 199 pc.printf("[MODE] operating...\r\n");
tverouden 5:04b26b2f536a 200 // print current state
tverouden 5:04b26b2f536a 201 changeState = false; // stay in this state
tverouden 5:04b26b2f536a 202
tverouden 5:04b26b2f536a 203 // Actions when entering state
tverouden 5:04b26b2f536a 204 /* */
tverouden 5:04b26b2f536a 205
tverouden 5:04b26b2f536a 206 }
tverouden 5:04b26b2f536a 207 // ----------------------------- action ------------------------------
tverouden 5:04b26b2f536a 208 // Actions for each loop iteration
tverouden 5:04b26b2f536a 209 /* */
tverouden 5:04b26b2f536a 210
tverouden 5:04b26b2f536a 211 // --------------------------- transition ----------------------------
tverouden 5:04b26b2f536a 212 // Transition condition #1: with button press, back to homing mode
tverouden 5:04b26b2f536a 213 if (buttonBio2 == true) {
tverouden 5:04b26b2f536a 214 // Actions when leaving state
tverouden 5:04b26b2f536a 215 /* */
tverouden 5:04b26b2f536a 216
tverouden 5:04b26b2f536a 217 currentState = homing; // change to state
tverouden 5:04b26b2f536a 218 changeState = true; // next loop, switch states
tverouden 5:04b26b2f536a 219 }
tverouden 5:04b26b2f536a 220 // Transition condition #2: after 3 sec relaxation, start flipping // In 3 seconden zijn de bladzijden uit zichzelf alweer helemaal teruggegaan. Misschien dit gewoon doen na het voorgedefinieerde pad
tverouden 5:04b26b2f536a 221 if (1) {
tverouden 5:04b26b2f536a 222 // Actions when leaving state
tverouden 5:04b26b2f536a 223 /* */
tverouden 5:04b26b2f536a 224
tverouden 5:04b26b2f536a 225 currentState = homing; // change to state
tverouden 5:04b26b2f536a 226 changeState = true; // next loop, switch states
tverouden 5:04b26b2f536a 227 }
tverouden 5:04b26b2f536a 228 break; // end case
tverouden 5:04b26b2f536a 229
tverouden 5:04b26b2f536a 230 // ============================= FLIPPING MODE =============================== // Beweegt deze modus zowel heen als weer en zo ja, hoe bepaalt hij wat moet gebeuren?
tverouden 5:04b26b2f536a 231 case flipping:
tverouden 5:04b26b2f536a 232 // ------------------------- initialisation --------------------------
tverouden 5:04b26b2f536a 233 if (changeState) { // when entering the state
tverouden 5:04b26b2f536a 234 pc.printf("[MODE] flipping...\r\n");
tverouden 5:04b26b2f536a 235 // print current state
tverouden 5:04b26b2f536a 236 changeState = false; // stay in this state
tverouden 5:04b26b2f536a 237
tverouden 5:04b26b2f536a 238 // Actions when entering state
tverouden 5:04b26b2f536a 239 /* */
tverouden 5:04b26b2f536a 240
tverouden 5:04b26b2f536a 241 }
tverouden 5:04b26b2f536a 242 // ----------------------------- action ------------------------------
tverouden 5:04b26b2f536a 243 // Actions for each loop iteration
tverouden 5:04b26b2f536a 244 /* */
tverouden 5:04b26b2f536a 245
tverouden 5:04b26b2f536a 246 // --------------------------- transition ----------------------------
tverouden 5:04b26b2f536a 247 // Transition condition #1: with button press, back to homing mode // Moet ook dit niet automatisch gaan? Nu blijft hij vrolijk in die modus niks doen...
tverouden 5:04b26b2f536a 248 if (1) { // En hij gaat nu terug naar homing mode, maar dan moet je dus elke keer weer kiezen voor demo of operation mode?
tverouden 5:04b26b2f536a 249 // Actions when leaving state
tverouden 5:04b26b2f536a 250 /* */
tverouden 5:04b26b2f536a 251
tverouden 5:04b26b2f536a 252 currentState = homing; // change to state
tverouden 5:04b26b2f536a 253 changeState = true; // next loop, switch states
tverouden 5:04b26b2f536a 254 }
tverouden 5:04b26b2f536a 255 break; // end case
tverouden 5:04b26b2f536a 256
tverouden 5:04b26b2f536a 257 // ============================== DEMOING MODE ===============================
tverouden 5:04b26b2f536a 258 case demoing:
tverouden 5:04b26b2f536a 259 // ------------------------- initialisation --------------------------
tverouden 5:04b26b2f536a 260 if (changeState) { // when entering the state
tverouden 5:04b26b2f536a 261 pc.printf("[MODE] demoing...\r\n");
tverouden 5:04b26b2f536a 262 // print current state
tverouden 5:04b26b2f536a 263 changeState = false; // stay in this state
tverouden 5:04b26b2f536a 264
tverouden 5:04b26b2f536a 265 // Actions when entering state
tverouden 5:04b26b2f536a 266 /* */
tverouden 5:04b26b2f536a 267
tverouden 5:04b26b2f536a 268 }
tverouden 5:04b26b2f536a 269 // ----------------------------- action ------------------------------
tverouden 5:04b26b2f536a 270 // Actions for each loop iteration
tverouden 5:04b26b2f536a 271 /* */
tverouden 5:04b26b2f536a 272
tverouden 5:04b26b2f536a 273 // --------------------------- transition ----------------------------
tverouden 5:04b26b2f536a 274 // Transition condition #1: with button press, back to homing mode
tverouden 5:04b26b2f536a 275 if (1) {
tverouden 5:04b26b2f536a 276 // Actions when leaving state
tverouden 5:04b26b2f536a 277 /* */
tverouden 5:04b26b2f536a 278
tverouden 5:04b26b2f536a 279 currentState = homing; // change to state
tverouden 5:04b26b2f536a 280 changeState = true; // next loop, switch states
tverouden 5:04b26b2f536a 281 }
tverouden 5:04b26b2f536a 282 // Transition condition #2: after 3 sec relaxation, start flipping // In 3 seconden zijn de bladzijden uit zichzelf alweer helemaal teruggegaan. Misschien dit gewoon doen na het voorgedefinieerde pad
tverouden 5:04b26b2f536a 283 if (1) {
tverouden 5:04b26b2f536a 284 // Actions when leaving state
tverouden 5:04b26b2f536a 285 /* */
tverouden 5:04b26b2f536a 286
tverouden 5:04b26b2f536a 287 currentState = flipping; // change to state
tverouden 5:04b26b2f536a 288 changeState = true; // next loop, switch states
tverouden 5:04b26b2f536a 289 }
tverouden 5:04b26b2f536a 290 break; // end case
tverouden 5:04b26b2f536a 291
tverouden 5:04b26b2f536a 292 // =============================== FAILING MODE ================================
tverouden 5:04b26b2f536a 293 case failing:
tverouden 5:04b26b2f536a 294 // ------------------------- initialisation --------------------------
tverouden 5:04b26b2f536a 295 if (changeState) { // when entering the state
tverouden 5:04b26b2f536a 296 pc.printf("[ERROR] entering failure mode\r\n");
tverouden 5:04b26b2f536a 297 // print current state
tverouden 3:9c63fc5f157e 298 changeState = false; // stay in this state
tverouden 3:9c63fc5f157e 299
tverouden 3:9c63fc5f157e 300 // Actions when entering state
tverouden 6:f32352bc5078 301 ledGreen = 1; // red LED on
tverouden 6:f32352bc5078 302 ledBlue = 1;
tverouden 6:f32352bc5078 303 ledRed = 0;
tverouden 4:5ce2c8864908 304
tverouden 6:f32352bc5078 305 // pin3 = 0; // all motor forces to zero // Pins nog niet gedefiniëerd
tverouden 6:f32352bc5078 306 // pin5 = 0;
tverouden 6:f32352bc5078 307 // pin6 = 0;
tverouden 6:f32352bc5078 308 exit (0); // abort mission
tverouden 4:5ce2c8864908 309 }
tverouden 4:5ce2c8864908 310 break; // end case
tverouden 4:5ce2c8864908 311
tverouden 4:5ce2c8864908 312 // ============================== DEFAULT MODE =================================
tverouden 3:9c63fc5f157e 313 default:
tverouden 4:5ce2c8864908 314 // ---------------------------- enter failing mode -----------------------------
tverouden 4:5ce2c8864908 315 currentState = failing; // change to state
tverouden 4:5ce2c8864908 316 changeState = true; // next loop, switch states
tverouden 4:5ce2c8864908 317 // print current state
tverouden 4:5ce2c8864908 318 pc.printf("[ERROR] unknown or unimplemented state reached\r\n");
tverouden 3:9c63fc5f157e 319
tverouden 4:5ce2c8864908 320 } // end switch
tverouden 4:5ce2c8864908 321 } // end stateMachine
tverouden 3:9c63fc5f157e 322
tverouden 3:9c63fc5f157e 323
tverouden 2:d70795e4e0bf 324
tverouden 2:d70795e4e0bf 325 // ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ MAIN LOOP ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
tverouden 2:d70795e4e0bf 326
tverouden 3:9c63fc5f157e 327 int main()
tverouden 3:9c63fc5f157e 328 {
tverouden 6:f32352bc5078 329 // ================================ EMERGENCY ================================ // Dit hoeft dus niet in de while loop?
tverouden 6:f32352bc5078 330 //If the emergency button is pressed, stop program via failing state
tverouden 6:f32352bc5078 331 emergencybutton.rise(stopProgram);
tverouden 6:f32352bc5078 332
tverouden 2:d70795e4e0bf 333 // ==================================== LOOP ===================================
tverouden 2:d70795e4e0bf 334 while (true) { // loop forever
tverouden 2:d70795e4e0bf 335
tverouden 2:d70795e4e0bf 336 }
tverouden 2:d70795e4e0bf 337 }