Manon Roussey / JARVIS_Ticker_final

Dependencies:   DATA_LOGGER INTERFACE SDFileSystem X_NUCLEO_IKS01A1 mbed-dev

Committer:
Manon_rsy
Date:
Wed Oct 04 11:55:45 2017 +0000
Revision:
0:24315b4d52d7
Child:
1:3b67430fc74d
V2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Manon_rsy 0:24315b4d52d7 1 #include "mbed.h"
Manon_rsy 0:24315b4d52d7 2 #include "SDFileSystem.h"
Manon_rsy 0:24315b4d52d7 3 #include "x_nucleo_iks01a1.h"
Manon_rsy 0:24315b4d52d7 4 #include "INTERFACE.h"
Manon_rsy 0:24315b4d52d7 5 #include "DATA_LOGGER.h"
Manon_rsy 0:24315b4d52d7 6 #include "TIMER_LIB.h"
Manon_rsy 0:24315b4d52d7 7
Manon_rsy 0:24315b4d52d7 8 DigitalOut L0(LED1); // led L0
Manon_rsy 0:24315b4d52d7 9 void automate();
Manon_rsy 0:24315b4d52d7 10
Manon_rsy 0:24315b4d52d7 11 int LO=0;
Manon_rsy 0:24315b4d52d7 12 Timer TIMER_EJECTION;
Manon_rsy 0:24315b4d52d7 13 Timer TIMER_PARACHUTE;
Manon_rsy 0:24315b4d52d7 14 int leds;
Manon_rsy 0:24315b4d52d7 15 int erreur;
Manon_rsy 0:24315b4d52d7 16 int ALTITUDE = 25842;
Manon_rsy 0:24315b4d52d7 17
Manon_rsy 0:24315b4d52d7 18
Manon_rsy 0:24315b4d52d7 19 int main(void) {
Manon_rsy 0:24315b4d52d7 20
Manon_rsy 0:24315b4d52d7 21 while(1){
Manon_rsy 0:24315b4d52d7 22 automate();
Manon_rsy 0:24315b4d52d7 23 }
Manon_rsy 0:24315b4d52d7 24
Manon_rsy 0:24315b4d52d7 25 }
Manon_rsy 0:24315b4d52d7 26
Manon_rsy 0:24315b4d52d7 27 void automate(void){
Manon_rsy 0:24315b4d52d7 28
Manon_rsy 0:24315b4d52d7 29
Manon_rsy 0:24315b4d52d7 30
Manon_rsy 0:24315b4d52d7 31 typedef enum {TEST=0, COUNT=1, WAIT_EJECTION=2, EJECTION=3, WAIT_PARACHUTE=4, PARACHUTE=5, AUTO_PILOTE=6, LED=7} type_etat;
Manon_rsy 0:24315b4d52d7 32 type_etat etat_actuel;
Manon_rsy 0:24315b4d52d7 33 static type_etat etat_futur=TEST;
Manon_rsy 0:24315b4d52d7 34 // gestion des entrees
Manon_rsy 0:24315b4d52d7 35 // -------------------
Manon_rsy 0:24315b4d52d7 36 // gestion du diagramme de transition
Manon_rsy 0:24315b4d52d7 37 // ----------------------------------
Manon_rsy 0:24315b4d52d7 38 etat_actuel = etat_futur;
Manon_rsy 0:24315b4d52d7 39 switch(etat_actuel) {
Manon_rsy 0:24315b4d52d7 40 case TEST :
Manon_rsy 0:24315b4d52d7 41 if (erreur==0) etat_futur = COUNT;
Manon_rsy 0:24315b4d52d7 42 break;
Manon_rsy 0:24315b4d52d7 43 case COUNT :
Manon_rsy 0:24315b4d52d7 44 if (LO==1) etat_futur = WAIT_EJECTION;
Manon_rsy 0:24315b4d52d7 45 break;
Manon_rsy 0:24315b4d52d7 46 case WAIT_EJECTION :
Manon_rsy 0:24315b4d52d7 47 if(TIMER_EJECTION.read()>5.0) etat_futur = EJECTION; //66s IRL
Manon_rsy 0:24315b4d52d7 48 break;
Manon_rsy 0:24315b4d52d7 49 case EJECTION :
Manon_rsy 0:24315b4d52d7 50 etat_futur = WAIT_PARACHUTE;
Manon_rsy 0:24315b4d52d7 51 break;
Manon_rsy 0:24315b4d52d7 52 case WAIT_PARACHUTE :
Manon_rsy 0:24315b4d52d7 53 if(TIMER_PARACHUTE.read()>6.0) etat_futur = PARACHUTE; // 84s IRL
Manon_rsy 0:24315b4d52d7 54 break;
Manon_rsy 0:24315b4d52d7 55 case PARACHUTE :
Manon_rsy 0:24315b4d52d7 56 if (ALTITUDE <26000) etat_futur = AUTO_PILOTE;
Manon_rsy 0:24315b4d52d7 57 break;
Manon_rsy 0:24315b4d52d7 58 case AUTO_PILOTE :
Manon_rsy 0:24315b4d52d7 59 if(leds==3) etat_futur = LED;
Manon_rsy 0:24315b4d52d7 60 break;
Manon_rsy 0:24315b4d52d7 61 case LED :
Manon_rsy 0:24315b4d52d7 62 break;
Manon_rsy 0:24315b4d52d7 63 }
Manon_rsy 0:24315b4d52d7 64 // gestion des sorties
Manon_rsy 0:24315b4d52d7 65 // -------------------
Manon_rsy 0:24315b4d52d7 66 switch(etat_actuel) {
Manon_rsy 0:24315b4d52d7 67 case TEST :
Manon_rsy 0:24315b4d52d7 68 INTERFACE_PRELAUNCH();
Manon_rsy 0:24315b4d52d7 69 erreur = INTERFACE_PRELAUNCH_TEST();
Manon_rsy 0:24315b4d52d7 70 INTERFACE_TEST_LECTURE_SD();
Manon_rsy 0:24315b4d52d7 71 DATA_LOGGER_W_PC();
Manon_rsy 0:24315b4d52d7 72 LO=1;
Manon_rsy 0:24315b4d52d7 73 break;
Manon_rsy 0:24315b4d52d7 74 case COUNT :
Manon_rsy 0:24315b4d52d7 75 COUNTDOWN();
Manon_rsy 0:24315b4d52d7 76 break;
Manon_rsy 0:24315b4d52d7 77 case WAIT_EJECTION :
Manon_rsy 0:24315b4d52d7 78 INTERUPTION();
Manon_rsy 0:24315b4d52d7 79 TIMER_EJECTION.start();
Manon_rsy 0:24315b4d52d7 80 break;
Manon_rsy 0:24315b4d52d7 81 case EJECTION :
Manon_rsy 0:24315b4d52d7 82 FCT_EJECTION();
Manon_rsy 0:24315b4d52d7 83 TIMER_EJECTION.stop();
Manon_rsy 0:24315b4d52d7 84 TIMER_EJECTION.reset();
Manon_rsy 0:24315b4d52d7 85 INTERUPTION();
Manon_rsy 0:24315b4d52d7 86 //Gestion de l'éjection
Manon_rsy 0:24315b4d52d7 87 break;
Manon_rsy 0:24315b4d52d7 88 case WAIT_PARACHUTE :
Manon_rsy 0:24315b4d52d7 89 TIMER_PARACHUTE.start();
Manon_rsy 0:24315b4d52d7 90 INTERUPTION();
Manon_rsy 0:24315b4d52d7 91 break;
Manon_rsy 0:24315b4d52d7 92 case PARACHUTE :
Manon_rsy 0:24315b4d52d7 93 FCT_PARACHUTE();
Manon_rsy 0:24315b4d52d7 94 INTERUPTION();
Manon_rsy 0:24315b4d52d7 95 //Gestion du lachement du parachute
Manon_rsy 0:24315b4d52d7 96 break;
Manon_rsy 0:24315b4d52d7 97 case AUTO_PILOTE :
Manon_rsy 0:24315b4d52d7 98 //Gestion auto pilote
Manon_rsy 0:24315b4d52d7 99 leds=INTERUPTION();
Manon_rsy 0:24315b4d52d7 100 break;
Manon_rsy 0:24315b4d52d7 101 case LED :
Manon_rsy 0:24315b4d52d7 102 L0 = 1;
Manon_rsy 0:24315b4d52d7 103 break;
Manon_rsy 0:24315b4d52d7 104 }
Manon_rsy 0:24315b4d52d7 105 }
Manon_rsy 0:24315b4d52d7 106
Manon_rsy 0:24315b4d52d7 107
Manon_rsy 0:24315b4d52d7 108
Manon_rsy 0:24315b4d52d7 109
Manon_rsy 0:24315b4d52d7 110
Manon_rsy 0:24315b4d52d7 111
Manon_rsy 0:24315b4d52d7 112
Manon_rsy 0:24315b4d52d7 113
Manon_rsy 0:24315b4d52d7 114
Manon_rsy 0:24315b4d52d7 115
Manon_rsy 0:24315b4d52d7 116