Juan Ignacio Cobas
/
TP_BOMBA
TP1 Ej 3 Bomba Cobas, Montero
Diff: main.cpp
- Revision:
- 0:9d8c86972a9d
- Child:
- 1:d99665a519ed
diff -r 000000000000 -r 9d8c86972a9d main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed May 22 20:58:56 2019 +0000 @@ -0,0 +1,140 @@ +#include "mbed.h" +#include "tsi_sensor.h" + +/* This defines will be replaced by PinNames soon */ +#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) +#define ELEC0 9 +#define ELEC1 10 +#elif defined (TARGET_KL05Z) +#define ELEC0 9 +#define ELEC1 8 +#else +#error TARGET NOT DEFINED +#endif + +#define ESPERO_ARRANQUE 0 +#define COMPARO_CABLES 1 +#define GANA 2 +#define PIERDE 3 +#define ESPERO_CABLES 4 +#define COMPARACION 5 + +// Funciones +void CABLES(); +void MAQUINA_GENERAL(); +//Timer +Ticker timer; +void t(); +//Salidas +DigitalOut ledr(LED1); +DigitalOut ledg(LED2); +DigitalOut ledb(LED3); +TSIAnalogSlider tsi(ELEC0, ELEC1, 40); + +// Variables +unsigned int n=0, habcables=0, perdiste=0, finsec=0, tiempo=0; +int secuencia[4]= {1,3,4,2}; +int main(void) +{ + ledg=1; + ledr=1; + ledb=1; + timer.attach(&t,0.01); + while (true) { + CABLES(); + MAQUINA_GENERAL(); + } +} + + +void MAQUINA_GENERAL() +{ + static unsigned int paso_general=ESPERO_ARRANQUE; + unsigned int flag=0; + switch(paso_general) { + case ESPERO_ARRANQUE: + n=0; + tiempo=0; + flag=0; + perdiste=0; + if(tsi.readPercentage() != 0) { + paso_general=COMPARO_CABLES; + } + break; + case COMPARO_CABLES: + habcables=1; + if(perdiste == 1) { + paso_general=PIERDE; + } + if(finsec == 1) { + paso_general=GANA; + } + break; + case GANA: + if(flag == 0) { + flag=1; + tiempo=100; + ledg=0; + } else if(tiempo==0 && flag == 1) { + ledg=1; + paso_general=ESPERO_ARRANQUE; + } + break; + case PIERDE: + break; + } +} + + +void CABLES() +{ + static unsigned int paso_cables=ESPERO_CABLES; + unsigned int fail=0; + switch(paso_cables) { + case ESPERO_CABLES: + if(habcables == 1) { + paso_cables=COMPARACION; + } + break; + case COMPARACION: + if(n == 0) { + if((C1 || C2 || C3 || C4) == 1) { + if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { + n++; + } else fail=1; + } + } else if(n == 1) { + if() { + if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { + n++; + } else fail=1; + } + } else if(n == 2) { + if() { + if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { + n++; + } else fail=1; + } + } else if(n == 3) { + if() { + if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { + finsec=1; + habcables=0; + paso_cables=ESPERO_CABLES; + } else fail=1; + } + } + if(fail == 1) { + perdiste=1; + habcables=0; + paso_cables=ESPERO_CABLES; + } + break; + } +} + +void t() +{ + if (tiempo > 0) + tiempo--; +} \ No newline at end of file