Juan Ignacio Cobas
/
TP_BOMBA
TP1 Ej 3 Bomba Cobas, Montero
main.cpp@0:9d8c86972a9d, 2019-05-22 (annotated)
- Committer:
- cobasjuan
- Date:
- Wed May 22 20:58:56 2019 +0000
- Revision:
- 0:9d8c86972a9d
- Child:
- 1:d99665a519ed
Version 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cobasjuan | 0:9d8c86972a9d | 1 | #include "mbed.h" |
cobasjuan | 0:9d8c86972a9d | 2 | #include "tsi_sensor.h" |
cobasjuan | 0:9d8c86972a9d | 3 | |
cobasjuan | 0:9d8c86972a9d | 4 | /* This defines will be replaced by PinNames soon */ |
cobasjuan | 0:9d8c86972a9d | 5 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
cobasjuan | 0:9d8c86972a9d | 6 | #define ELEC0 9 |
cobasjuan | 0:9d8c86972a9d | 7 | #define ELEC1 10 |
cobasjuan | 0:9d8c86972a9d | 8 | #elif defined (TARGET_KL05Z) |
cobasjuan | 0:9d8c86972a9d | 9 | #define ELEC0 9 |
cobasjuan | 0:9d8c86972a9d | 10 | #define ELEC1 8 |
cobasjuan | 0:9d8c86972a9d | 11 | #else |
cobasjuan | 0:9d8c86972a9d | 12 | #error TARGET NOT DEFINED |
cobasjuan | 0:9d8c86972a9d | 13 | #endif |
cobasjuan | 0:9d8c86972a9d | 14 | |
cobasjuan | 0:9d8c86972a9d | 15 | #define ESPERO_ARRANQUE 0 |
cobasjuan | 0:9d8c86972a9d | 16 | #define COMPARO_CABLES 1 |
cobasjuan | 0:9d8c86972a9d | 17 | #define GANA 2 |
cobasjuan | 0:9d8c86972a9d | 18 | #define PIERDE 3 |
cobasjuan | 0:9d8c86972a9d | 19 | #define ESPERO_CABLES 4 |
cobasjuan | 0:9d8c86972a9d | 20 | #define COMPARACION 5 |
cobasjuan | 0:9d8c86972a9d | 21 | |
cobasjuan | 0:9d8c86972a9d | 22 | // Funciones |
cobasjuan | 0:9d8c86972a9d | 23 | void CABLES(); |
cobasjuan | 0:9d8c86972a9d | 24 | void MAQUINA_GENERAL(); |
cobasjuan | 0:9d8c86972a9d | 25 | //Timer |
cobasjuan | 0:9d8c86972a9d | 26 | Ticker timer; |
cobasjuan | 0:9d8c86972a9d | 27 | void t(); |
cobasjuan | 0:9d8c86972a9d | 28 | //Salidas |
cobasjuan | 0:9d8c86972a9d | 29 | DigitalOut ledr(LED1); |
cobasjuan | 0:9d8c86972a9d | 30 | DigitalOut ledg(LED2); |
cobasjuan | 0:9d8c86972a9d | 31 | DigitalOut ledb(LED3); |
cobasjuan | 0:9d8c86972a9d | 32 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
cobasjuan | 0:9d8c86972a9d | 33 | |
cobasjuan | 0:9d8c86972a9d | 34 | // Variables |
cobasjuan | 0:9d8c86972a9d | 35 | unsigned int n=0, habcables=0, perdiste=0, finsec=0, tiempo=0; |
cobasjuan | 0:9d8c86972a9d | 36 | int secuencia[4]= {1,3,4,2}; |
cobasjuan | 0:9d8c86972a9d | 37 | int main(void) |
cobasjuan | 0:9d8c86972a9d | 38 | { |
cobasjuan | 0:9d8c86972a9d | 39 | ledg=1; |
cobasjuan | 0:9d8c86972a9d | 40 | ledr=1; |
cobasjuan | 0:9d8c86972a9d | 41 | ledb=1; |
cobasjuan | 0:9d8c86972a9d | 42 | timer.attach(&t,0.01); |
cobasjuan | 0:9d8c86972a9d | 43 | while (true) { |
cobasjuan | 0:9d8c86972a9d | 44 | CABLES(); |
cobasjuan | 0:9d8c86972a9d | 45 | MAQUINA_GENERAL(); |
cobasjuan | 0:9d8c86972a9d | 46 | } |
cobasjuan | 0:9d8c86972a9d | 47 | } |
cobasjuan | 0:9d8c86972a9d | 48 | |
cobasjuan | 0:9d8c86972a9d | 49 | |
cobasjuan | 0:9d8c86972a9d | 50 | void MAQUINA_GENERAL() |
cobasjuan | 0:9d8c86972a9d | 51 | { |
cobasjuan | 0:9d8c86972a9d | 52 | static unsigned int paso_general=ESPERO_ARRANQUE; |
cobasjuan | 0:9d8c86972a9d | 53 | unsigned int flag=0; |
cobasjuan | 0:9d8c86972a9d | 54 | switch(paso_general) { |
cobasjuan | 0:9d8c86972a9d | 55 | case ESPERO_ARRANQUE: |
cobasjuan | 0:9d8c86972a9d | 56 | n=0; |
cobasjuan | 0:9d8c86972a9d | 57 | tiempo=0; |
cobasjuan | 0:9d8c86972a9d | 58 | flag=0; |
cobasjuan | 0:9d8c86972a9d | 59 | perdiste=0; |
cobasjuan | 0:9d8c86972a9d | 60 | if(tsi.readPercentage() != 0) { |
cobasjuan | 0:9d8c86972a9d | 61 | paso_general=COMPARO_CABLES; |
cobasjuan | 0:9d8c86972a9d | 62 | } |
cobasjuan | 0:9d8c86972a9d | 63 | break; |
cobasjuan | 0:9d8c86972a9d | 64 | case COMPARO_CABLES: |
cobasjuan | 0:9d8c86972a9d | 65 | habcables=1; |
cobasjuan | 0:9d8c86972a9d | 66 | if(perdiste == 1) { |
cobasjuan | 0:9d8c86972a9d | 67 | paso_general=PIERDE; |
cobasjuan | 0:9d8c86972a9d | 68 | } |
cobasjuan | 0:9d8c86972a9d | 69 | if(finsec == 1) { |
cobasjuan | 0:9d8c86972a9d | 70 | paso_general=GANA; |
cobasjuan | 0:9d8c86972a9d | 71 | } |
cobasjuan | 0:9d8c86972a9d | 72 | break; |
cobasjuan | 0:9d8c86972a9d | 73 | case GANA: |
cobasjuan | 0:9d8c86972a9d | 74 | if(flag == 0) { |
cobasjuan | 0:9d8c86972a9d | 75 | flag=1; |
cobasjuan | 0:9d8c86972a9d | 76 | tiempo=100; |
cobasjuan | 0:9d8c86972a9d | 77 | ledg=0; |
cobasjuan | 0:9d8c86972a9d | 78 | } else if(tiempo==0 && flag == 1) { |
cobasjuan | 0:9d8c86972a9d | 79 | ledg=1; |
cobasjuan | 0:9d8c86972a9d | 80 | paso_general=ESPERO_ARRANQUE; |
cobasjuan | 0:9d8c86972a9d | 81 | } |
cobasjuan | 0:9d8c86972a9d | 82 | break; |
cobasjuan | 0:9d8c86972a9d | 83 | case PIERDE: |
cobasjuan | 0:9d8c86972a9d | 84 | break; |
cobasjuan | 0:9d8c86972a9d | 85 | } |
cobasjuan | 0:9d8c86972a9d | 86 | } |
cobasjuan | 0:9d8c86972a9d | 87 | |
cobasjuan | 0:9d8c86972a9d | 88 | |
cobasjuan | 0:9d8c86972a9d | 89 | void CABLES() |
cobasjuan | 0:9d8c86972a9d | 90 | { |
cobasjuan | 0:9d8c86972a9d | 91 | static unsigned int paso_cables=ESPERO_CABLES; |
cobasjuan | 0:9d8c86972a9d | 92 | unsigned int fail=0; |
cobasjuan | 0:9d8c86972a9d | 93 | switch(paso_cables) { |
cobasjuan | 0:9d8c86972a9d | 94 | case ESPERO_CABLES: |
cobasjuan | 0:9d8c86972a9d | 95 | if(habcables == 1) { |
cobasjuan | 0:9d8c86972a9d | 96 | paso_cables=COMPARACION; |
cobasjuan | 0:9d8c86972a9d | 97 | } |
cobasjuan | 0:9d8c86972a9d | 98 | break; |
cobasjuan | 0:9d8c86972a9d | 99 | case COMPARACION: |
cobasjuan | 0:9d8c86972a9d | 100 | if(n == 0) { |
cobasjuan | 0:9d8c86972a9d | 101 | if((C1 || C2 || C3 || C4) == 1) { |
cobasjuan | 0:9d8c86972a9d | 102 | if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { |
cobasjuan | 0:9d8c86972a9d | 103 | n++; |
cobasjuan | 0:9d8c86972a9d | 104 | } else fail=1; |
cobasjuan | 0:9d8c86972a9d | 105 | } |
cobasjuan | 0:9d8c86972a9d | 106 | } else if(n == 1) { |
cobasjuan | 0:9d8c86972a9d | 107 | if() { |
cobasjuan | 0:9d8c86972a9d | 108 | if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { |
cobasjuan | 0:9d8c86972a9d | 109 | n++; |
cobasjuan | 0:9d8c86972a9d | 110 | } else fail=1; |
cobasjuan | 0:9d8c86972a9d | 111 | } |
cobasjuan | 0:9d8c86972a9d | 112 | } else if(n == 2) { |
cobasjuan | 0:9d8c86972a9d | 113 | if() { |
cobasjuan | 0:9d8c86972a9d | 114 | if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { |
cobasjuan | 0:9d8c86972a9d | 115 | n++; |
cobasjuan | 0:9d8c86972a9d | 116 | } else fail=1; |
cobasjuan | 0:9d8c86972a9d | 117 | } |
cobasjuan | 0:9d8c86972a9d | 118 | } else if(n == 3) { |
cobasjuan | 0:9d8c86972a9d | 119 | if() { |
cobasjuan | 0:9d8c86972a9d | 120 | if((secuencia[n] == 1 && C1 == 1) || (secuencia[n] == 2 && C2 == 1) || (secuencia[n] == 3 && C3 == 1) || (secuencia[n] == 4 && C4 == 1)) { |
cobasjuan | 0:9d8c86972a9d | 121 | finsec=1; |
cobasjuan | 0:9d8c86972a9d | 122 | habcables=0; |
cobasjuan | 0:9d8c86972a9d | 123 | paso_cables=ESPERO_CABLES; |
cobasjuan | 0:9d8c86972a9d | 124 | } else fail=1; |
cobasjuan | 0:9d8c86972a9d | 125 | } |
cobasjuan | 0:9d8c86972a9d | 126 | } |
cobasjuan | 0:9d8c86972a9d | 127 | if(fail == 1) { |
cobasjuan | 0:9d8c86972a9d | 128 | perdiste=1; |
cobasjuan | 0:9d8c86972a9d | 129 | habcables=0; |
cobasjuan | 0:9d8c86972a9d | 130 | paso_cables=ESPERO_CABLES; |
cobasjuan | 0:9d8c86972a9d | 131 | } |
cobasjuan | 0:9d8c86972a9d | 132 | break; |
cobasjuan | 0:9d8c86972a9d | 133 | } |
cobasjuan | 0:9d8c86972a9d | 134 | } |
cobasjuan | 0:9d8c86972a9d | 135 | |
cobasjuan | 0:9d8c86972a9d | 136 | void t() |
cobasjuan | 0:9d8c86972a9d | 137 | { |
cobasjuan | 0:9d8c86972a9d | 138 | if (tiempo > 0) |
cobasjuan | 0:9d8c86972a9d | 139 | tiempo--; |
cobasjuan | 0:9d8c86972a9d | 140 | } |