version fin de projet S4P Manon Roussey et Stéphane Padrao Dos Santos
Dependencies: DATA_LOGGER INTERFACE SDFileSystem X_NUCLEO_IKS01A1 mbed-dev
Diff: main.cpp
- Revision:
- 1:3b67430fc74d
- Parent:
- 0:24315b4d52d7
- Child:
- 2:504824a18252
--- a/main.cpp Wed Oct 04 11:55:45 2017 +0000 +++ b/main.cpp Fri Oct 20 12:42:54 2017 +0000 @@ -4,31 +4,37 @@ #include "INTERFACE.h" #include "DATA_LOGGER.h" #include "TIMER_LIB.h" +#include "math.h" + + +Ticker ticker; + +bool canlog = 0; +void INTERRUPTION(void); +bool dolog = 0; DigitalOut L0(LED1); // led L0 void automate(); -int LO=0; +short LO=0; Timer TIMER_EJECTION; Timer TIMER_PARACHUTE; -int leds; -int erreur; -int ALTITUDE = 25842; - +short leds; +short erreur; +short ALTITUDE = 3374; int main(void) { + ticker.attach(&INTERRUPTION, 1); while(1){ - automate(); + automate(); } } void automate(void){ - - - typedef enum {TEST=0, COUNT=1, WAIT_EJECTION=2, EJECTION=3, WAIT_PARACHUTE=4, PARACHUTE=5, AUTO_PILOTE=6, LED=7} type_etat; + typedef enum {TEST=0, COUNT=1, WAIT_EJECTION=2, EJECTION=3, WAIT_PARACHUTE=4, PARACHUTE=5, AUTO_PILOTE=6, LED=7, ARRET=8} type_etat; type_etat etat_actuel; static type_etat etat_futur=TEST; // gestion des entrees @@ -38,27 +44,39 @@ etat_actuel = etat_futur; switch(etat_actuel) { case TEST : + if (erreur==0) etat_futur = COUNT; break; case COUNT : + + if (LO==1) etat_futur = WAIT_EJECTION; break; case WAIT_EJECTION : - if(TIMER_EJECTION.read()>5.0) etat_futur = EJECTION; //66s IRL + + if(TIMER_EJECTION.read()>5) { + etat_futur = EJECTION; //66s IRL + } break; case EJECTION : + etat_futur = WAIT_PARACHUTE; break; case WAIT_PARACHUTE : - if(TIMER_PARACHUTE.read()>6.0) etat_futur = PARACHUTE; // 84s IRL + + if(TIMER_PARACHUTE.read()>6) etat_futur = PARACHUTE; // 84s IRL break; case PARACHUTE : - if (ALTITUDE <26000) etat_futur = AUTO_PILOTE; + + if (ALTITUDE <3375) etat_futur = AUTO_PILOTE; break; case AUTO_PILOTE : + if(leds==3) etat_futur = LED; break; case LED : + + etat_futur = ARRET; break; } // gestion des sorties @@ -72,42 +90,66 @@ LO=1; break; case COUNT : - COUNTDOWN(); + COUNTDOWN(); break; case WAIT_EJECTION : + canlog = 1; INTERUPTION(); TIMER_EJECTION.start(); break; case EJECTION : + canlog = 1; FCT_EJECTION(); TIMER_EJECTION.stop(); TIMER_EJECTION.reset(); INTERUPTION(); - //Gestion de l'éjection break; case WAIT_PARACHUTE : + TIMER_PARACHUTE.start(); - INTERUPTION(); + INTERUPTION(); break; case PARACHUTE : FCT_PARACHUTE(); - INTERUPTION(); + INTERUPTION(); //Gestion du lachement du parachute break; case AUTO_PILOTE : //Gestion auto pilote - leds=INTERUPTION(); + leds = INTERUPTION(); + //leds=INTERRUPTION(); break; case LED : - L0 = 1; - break; + Atterissage(); + break; + case ARRET : + break; } } - - - - +void INTERRUPTION(void){ + + if (canlog) + { + dolog = 1; + } + +} +/* +int INTERUPTION(void){ + int led; + + if( Buffer_Test == 1) // 0.5 + { + led = DATA_LOGGER_W_SD(); + #if FLIGHMODE + DATA_LOGGER_W_PC(); + #endif + Buffer_Test = 0; + } + return led; +} +*/