RODRIGUEZ STINA OROPEZA 6ºA
Dependencies: mbed tsi_sensor DHT11
main.cpp@0:374ae6cd7a56, 2019-06-12 (annotated)
- Committer:
- matirodriguez
- Date:
- Wed Jun 12 18:09:04 2019 +0000
- Revision:
- 0:374ae6cd7a56
EJERCICIO 1 TERMINADO;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
matirodriguez | 0:374ae6cd7a56 | 1 | #include "mbed.h" |
matirodriguez | 0:374ae6cd7a56 | 2 | #include "tsi_sensor.h" |
matirodriguez | 0:374ae6cd7a56 | 3 | #include "Dht11.h" |
matirodriguez | 0:374ae6cd7a56 | 4 | |
matirodriguez | 0:374ae6cd7a56 | 5 | #define ELEC0 9 |
matirodriguez | 0:374ae6cd7a56 | 6 | #define ELEC1 10 |
matirodriguez | 0:374ae6cd7a56 | 7 | |
matirodriguez | 0:374ae6cd7a56 | 8 | enum {RESET, // Funcion enum que uso para establecer los estados de la maquina de estados como una palabra |
matirodriguez | 0:374ae6cd7a56 | 9 | LAZO_ABIERTO, |
matirodriguez | 0:374ae6cd7a56 | 10 | LAZO_CERRADO |
matirodriguez | 0:374ae6cd7a56 | 11 | }; |
matirodriguez | 0:374ae6cd7a56 | 12 | enum { NADA, // Funcion enum que uso para establecer los estados de la maquina de estados como una palabra |
matirodriguez | 0:374ae6cd7a56 | 13 | PULSADO |
matirodriguez | 0:374ae6cd7a56 | 14 | }; |
matirodriguez | 0:374ae6cd7a56 | 15 | |
matirodriguez | 0:374ae6cd7a56 | 16 | // Prototipos de funciones |
matirodriguez | 0:374ae6cd7a56 | 17 | |
matirodriguez | 0:374ae6cd7a56 | 18 | void MAQ_cooler(); // Maquina de estados que maneja al cooler en sus modos de funcionamiento |
matirodriguez | 0:374ae6cd7a56 | 19 | |
matirodriguez | 0:374ae6cd7a56 | 20 | void set_motor(); // Funcion que cada 1 segundo cambia el valor del PWM del motor, para no hacerlo a la velocidad del clock en el main |
matirodriguez | 0:374ae6cd7a56 | 21 | |
matirodriguez | 0:374ae6cd7a56 | 22 | void interrupcion(); // Funcion que se realiza cada vez que el pin establecido tenga un flanco. Usado para calcular los RPM |
matirodriguez | 0:374ae6cd7a56 | 23 | |
matirodriguez | 0:374ae6cd7a56 | 24 | void rpm_segundos(); // Funcion que multiplicará las revoluciones por segundo para obtener las RPM |
matirodriguez | 0:374ae6cd7a56 | 25 | |
matirodriguez | 0:374ae6cd7a56 | 26 | void MAQ_lecturaTSI(); //Prototipo funcion para solo leer 1 vez que se presiona el TSI |
matirodriguez | 0:374ae6cd7a56 | 27 | |
matirodriguez | 0:374ae6cd7a56 | 28 | void LEER_TSI(); //Prototipo funcion para guardar el valor analogico del TSI en todo momento |
matirodriguez | 0:374ae6cd7a56 | 29 | |
matirodriguez | 0:374ae6cd7a56 | 30 | void pulsacion_TSI(); //Prototipo funcion para leer 1 solo valor del TSI cada 2.5mseg |
matirodriguez | 0:374ae6cd7a56 | 31 | |
matirodriguez | 0:374ae6cd7a56 | 32 | void medir_temperatura(); // Funcion para leer el sensor de temperatura, en el tiempo especificado en datasheet |
matirodriguez | 0:374ae6cd7a56 | 33 | |
matirodriguez | 0:374ae6cd7a56 | 34 | |
matirodriguez | 0:374ae6cd7a56 | 35 | // Configuracion de puertos |
matirodriguez | 0:374ae6cd7a56 | 36 | |
matirodriguez | 0:374ae6cd7a56 | 37 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); // TSI |
matirodriguez | 0:374ae6cd7a56 | 38 | |
matirodriguez | 0:374ae6cd7a56 | 39 | InterruptIn velocidad(PTA13); // Sensor de rpm |
matirodriguez | 0:374ae6cd7a56 | 40 | |
matirodriguez | 0:374ae6cd7a56 | 41 | PwmOut cooler(PTB3); // Base del transistor que maneja el cooler |
matirodriguez | 0:374ae6cd7a56 | 42 | |
matirodriguez | 0:374ae6cd7a56 | 43 | AnalogIn pote(PTB0); // Potenciometro |
matirodriguez | 0:374ae6cd7a56 | 44 | |
matirodriguez | 0:374ae6cd7a56 | 45 | Dht11 sensor(PTD4); // Sensor DHT11 (libreria) |
matirodriguez | 0:374ae6cd7a56 | 46 | |
matirodriguez | 0:374ae6cd7a56 | 47 | DigitalOut ledrojo(LED_RED); // Led rojo de la placa MBED |
matirodriguez | 0:374ae6cd7a56 | 48 | |
matirodriguez | 0:374ae6cd7a56 | 49 | DigitalOut ledverde(LED_GREEN); // Led verde de la placa MBED |
matirodriguez | 0:374ae6cd7a56 | 50 | |
matirodriguez | 0:374ae6cd7a56 | 51 | |
matirodriguez | 0:374ae6cd7a56 | 52 | // Variables globales |
matirodriguez | 0:374ae6cd7a56 | 53 | |
matirodriguez | 0:374ae6cd7a56 | 54 | int auxiliar_rpm; // Variable que almacena las revoluciones por segundo |
matirodriguez | 0:374ae6cd7a56 | 55 | int rpm; // Variable que guarda los rpm para medirlos periodicamente |
matirodriguez | 0:374ae6cd7a56 | 56 | |
matirodriguez | 0:374ae6cd7a56 | 57 | int var_pulsacion = 25; // Variable para contar los 2.5mseg de la funcion pulsacion_TSI() |
matirodriguez | 0:374ae6cd7a56 | 58 | int teclado = NADA; // Variable que contiene el valor analogico del TSI en todo momento |
matirodriguez | 0:374ae6cd7a56 | 59 | int ingreso = NADA; // Variable que contiene si se presionó el TSI, que se lee y luego se borra |
matirodriguez | 0:374ae6cd7a56 | 60 | |
matirodriguez | 0:374ae6cd7a56 | 61 | int estado_maq_cooler = RESET; // Estado de la maquina de estados que maneja el cooler |
matirodriguez | 0:374ae6cd7a56 | 62 | int estado_maq_tsi = NADA; // Estado de la maquina de estados que maneja el TSI |
matirodriguez | 0:374ae6cd7a56 | 63 | |
matirodriguez | 0:374ae6cd7a56 | 64 | int auxiliar_temperatura; // Variable que contiene el ultimo valor de temperatura que se midio |
matirodriguez | 0:374ae6cd7a56 | 65 | float auxiliar_velocidad; // Variable que contiene el numero float (de 0 a 1) para ingresar en el PWM del cooler |
matirodriguez | 0:374ae6cd7a56 | 66 | |
matirodriguez | 0:374ae6cd7a56 | 67 | |
matirodriguez | 0:374ae6cd7a56 | 68 | // Tickers |
matirodriguez | 0:374ae6cd7a56 | 69 | |
matirodriguez | 0:374ae6cd7a56 | 70 | Ticker lectura; // Ticker lectura del TSI |
matirodriguez | 0:374ae6cd7a56 | 71 | Ticker pulsacion; // Ticker para usar la funcion pulsacion_TSI() |
matirodriguez | 0:374ae6cd7a56 | 72 | Ticker segundo; // Ticker para contar los RPM a partir de las revoluciones por segundo |
matirodriguez | 0:374ae6cd7a56 | 73 | Ticker pwm_cooler; // Ticker para escribir en la salida PWM cada cierto tiempo |
matirodriguez | 0:374ae6cd7a56 | 74 | Ticker medir; // Ticker para medir la temperatura |
matirodriguez | 0:374ae6cd7a56 | 75 | |
matirodriguez | 0:374ae6cd7a56 | 76 | int main(void) |
matirodriguez | 0:374ae6cd7a56 | 77 | { |
matirodriguez | 0:374ae6cd7a56 | 78 | medir_temperatura(); // Mido la temperatura así tengo un valor inicial |
matirodriguez | 0:374ae6cd7a56 | 79 | |
matirodriguez | 0:374ae6cd7a56 | 80 | // Junto los ticker con la funcion que deseo usar con él |
matirodriguez | 0:374ae6cd7a56 | 81 | lectura.attach(&LEER_TSI,0.1); |
matirodriguez | 0:374ae6cd7a56 | 82 | pulsacion.attach(&pulsacion_TSI,0.001); |
matirodriguez | 0:374ae6cd7a56 | 83 | segundo.attach(&rpm_segundos,1); |
matirodriguez | 0:374ae6cd7a56 | 84 | pwm_cooler.attach(&set_motor,0.3); |
matirodriguez | 0:374ae6cd7a56 | 85 | medir.attach(&medir_temperatura,2); |
matirodriguez | 0:374ae6cd7a56 | 86 | |
matirodriguez | 0:374ae6cd7a56 | 87 | // Digo que funcion se realiza cuando el pininterrupt se activa |
matirodriguez | 0:374ae6cd7a56 | 88 | velocidad.rise(&interrupcion); |
matirodriguez | 0:374ae6cd7a56 | 89 | |
matirodriguez | 0:374ae6cd7a56 | 90 | while (true) { |
matirodriguez | 0:374ae6cd7a56 | 91 | |
matirodriguez | 0:374ae6cd7a56 | 92 | // LLamo constantemente a las funciones de las maquinas de estados |
matirodriguez | 0:374ae6cd7a56 | 93 | MAQ_lecturaTSI(); |
matirodriguez | 0:374ae6cd7a56 | 94 | MAQ_cooler(); |
matirodriguez | 0:374ae6cd7a56 | 95 | |
matirodriguez | 0:374ae6cd7a56 | 96 | |
matirodriguez | 0:374ae6cd7a56 | 97 | } |
matirodriguez | 0:374ae6cd7a56 | 98 | } |
matirodriguez | 0:374ae6cd7a56 | 99 | |
matirodriguez | 0:374ae6cd7a56 | 100 | void medir_temperatura() |
matirodriguez | 0:374ae6cd7a56 | 101 | { |
matirodriguez | 0:374ae6cd7a56 | 102 | sensor.read(); // Actualizo el valor de temperatura del sensor |
matirodriguez | 0:374ae6cd7a56 | 103 | auxiliar_temperatura = sensor.getCelsius(); // Guardo el valor de temperatura en la variable correspondiente |
matirodriguez | 0:374ae6cd7a56 | 104 | } |
matirodriguez | 0:374ae6cd7a56 | 105 | |
matirodriguez | 0:374ae6cd7a56 | 106 | void MAQ_cooler() |
matirodriguez | 0:374ae6cd7a56 | 107 | { |
matirodriguez | 0:374ae6cd7a56 | 108 | int revoluciones; // Variable que usaré para calcular los RPM a partir del valor del PWM |
matirodriguez | 0:374ae6cd7a56 | 109 | |
matirodriguez | 0:374ae6cd7a56 | 110 | |
matirodriguez | 0:374ae6cd7a56 | 111 | switch(estado_maq_cooler) { |
matirodriguez | 0:374ae6cd7a56 | 112 | |
matirodriguez | 0:374ae6cd7a56 | 113 | case RESET: // No empiezo en ningun modo asi no se consume corriente recien prendo el micro |
matirodriguez | 0:374ae6cd7a56 | 114 | if(ingreso == PULSADO) { // Si se tocó el pulsador: |
matirodriguez | 0:374ae6cd7a56 | 115 | ingreso=NADA; // Limpio la variable |
matirodriguez | 0:374ae6cd7a56 | 116 | estado_maq_cooler = LAZO_ABIERTO; // Cambio de estado |
matirodriguez | 0:374ae6cd7a56 | 117 | } |
matirodriguez | 0:374ae6cd7a56 | 118 | break; |
matirodriguez | 0:374ae6cd7a56 | 119 | case LAZO_ABIERTO: |
matirodriguez | 0:374ae6cd7a56 | 120 | |
matirodriguez | 0:374ae6cd7a56 | 121 | auxiliar_velocidad = pote + 0.065; // El valor del PWM será el valor del pote, sumado al valor minimo para que prenda |
matirodriguez | 0:374ae6cd7a56 | 122 | // el cooler. No uso 200 RPM porque el ventilador no enciende de esa forma. |
matirodriguez | 0:374ae6cd7a56 | 123 | |
matirodriguez | 0:374ae6cd7a56 | 124 | // Corrigo el valor que hay en la salida si se detecta que bajaron los RPM |
matirodriguez | 0:374ae6cd7a56 | 125 | if(rpm < (auxiliar_velocidad * 8000)) { |
matirodriguez | 0:374ae6cd7a56 | 126 | auxiliar_velocidad=auxiliar_velocidad+0.1; |
matirodriguez | 0:374ae6cd7a56 | 127 | } else { |
matirodriguez | 0:374ae6cd7a56 | 128 | auxiliar_velocidad=auxiliar_velocidad-0.005; |
matirodriguez | 0:374ae6cd7a56 | 129 | } |
matirodriguez | 0:374ae6cd7a56 | 130 | |
matirodriguez | 0:374ae6cd7a56 | 131 | if(auxiliar_velocidad>(float)1) { |
matirodriguez | 0:374ae6cd7a56 | 132 | auxiliar_velocidad=(float)1; |
matirodriguez | 0:374ae6cd7a56 | 133 | } |
matirodriguez | 0:374ae6cd7a56 | 134 | |
matirodriguez | 0:374ae6cd7a56 | 135 | // Transicion de la maquina de estados |
matirodriguez | 0:374ae6cd7a56 | 136 | if(ingreso == PULSADO) { |
matirodriguez | 0:374ae6cd7a56 | 137 | ingreso=NADA; |
matirodriguez | 0:374ae6cd7a56 | 138 | estado_maq_cooler = LAZO_CERRADO; |
matirodriguez | 0:374ae6cd7a56 | 139 | } |
matirodriguez | 0:374ae6cd7a56 | 140 | |
matirodriguez | 0:374ae6cd7a56 | 141 | break; |
matirodriguez | 0:374ae6cd7a56 | 142 | |
matirodriguez | 0:374ae6cd7a56 | 143 | case LAZO_CERRADO: |
matirodriguez | 0:374ae6cd7a56 | 144 | |
matirodriguez | 0:374ae6cd7a56 | 145 | revoluciones = (auxiliar_temperatura * 8000) / 45; // Regla de 3 para calcular las revoluciones por minuto |
matirodriguez | 0:374ae6cd7a56 | 146 | // que corresponden para la temperatura medida |
matirodriguez | 0:374ae6cd7a56 | 147 | |
matirodriguez | 0:374ae6cd7a56 | 148 | |
matirodriguez | 0:374ae6cd7a56 | 149 | if(auxiliar_temperatura<20) { // Cuando la temperatura es mas baja que 20, seteo en el valor minimo del ventilador |
matirodriguez | 0:374ae6cd7a56 | 150 | auxiliar_velocidad = 0.065; |
matirodriguez | 0:374ae6cd7a56 | 151 | |
matirodriguez | 0:374ae6cd7a56 | 152 | // Corrigo el valor que hay en la salida si se detecta que bajaron los RPM |
matirodriguez | 0:374ae6cd7a56 | 153 | if(rpm < (auxiliar_velocidad * 8000)) { |
matirodriguez | 0:374ae6cd7a56 | 154 | auxiliar_velocidad=auxiliar_velocidad+0.05; |
matirodriguez | 0:374ae6cd7a56 | 155 | } else { |
matirodriguez | 0:374ae6cd7a56 | 156 | auxiliar_velocidad=auxiliar_velocidad-0.005; |
matirodriguez | 0:374ae6cd7a56 | 157 | } |
matirodriguez | 0:374ae6cd7a56 | 158 | } |
matirodriguez | 0:374ae6cd7a56 | 159 | |
matirodriguez | 0:374ae6cd7a56 | 160 | |
matirodriguez | 0:374ae6cd7a56 | 161 | if((auxiliar_temperatura>=20)&&(auxiliar_temperatura<45)) { // Dentro de este rango de temperatura, las RPM estan dadas |
matirodriguez | 0:374ae6cd7a56 | 162 | // por una regla de 3 simple |
matirodriguez | 0:374ae6cd7a56 | 163 | auxiliar_velocidad = (revoluciones * 1) / (float)8000; |
matirodriguez | 0:374ae6cd7a56 | 164 | |
matirodriguez | 0:374ae6cd7a56 | 165 | // Corrigo el valor que hay en la salida si se detecta que bajaron los RPM |
matirodriguez | 0:374ae6cd7a56 | 166 | if(rpm < (auxiliar_velocidad * 8000)) { |
matirodriguez | 0:374ae6cd7a56 | 167 | auxiliar_velocidad=auxiliar_velocidad+0.075; |
matirodriguez | 0:374ae6cd7a56 | 168 | } else { |
matirodriguez | 0:374ae6cd7a56 | 169 | auxiliar_velocidad=auxiliar_velocidad-0.0005; |
matirodriguez | 0:374ae6cd7a56 | 170 | } |
matirodriguez | 0:374ae6cd7a56 | 171 | |
matirodriguez | 0:374ae6cd7a56 | 172 | if(auxiliar_velocidad>(float)1) { |
matirodriguez | 0:374ae6cd7a56 | 173 | auxiliar_velocidad=(float)1; |
matirodriguez | 0:374ae6cd7a56 | 174 | } |
matirodriguez | 0:374ae6cd7a56 | 175 | |
matirodriguez | 0:374ae6cd7a56 | 176 | } |
matirodriguez | 0:374ae6cd7a56 | 177 | |
matirodriguez | 0:374ae6cd7a56 | 178 | if(auxiliar_temperatura >= 45) { // Si la temperatura es mas alta que la maxima, el cooler se encuentra al maximo de potencia |
matirodriguez | 0:374ae6cd7a56 | 179 | auxiliar_velocidad = 1; |
matirodriguez | 0:374ae6cd7a56 | 180 | } |
matirodriguez | 0:374ae6cd7a56 | 181 | |
matirodriguez | 0:374ae6cd7a56 | 182 | // Transicion de la maquina de estados |
matirodriguez | 0:374ae6cd7a56 | 183 | if(ingreso == PULSADO) { |
matirodriguez | 0:374ae6cd7a56 | 184 | ingreso=NADA; |
matirodriguez | 0:374ae6cd7a56 | 185 | estado_maq_cooler = LAZO_ABIERTO; |
matirodriguez | 0:374ae6cd7a56 | 186 | } |
matirodriguez | 0:374ae6cd7a56 | 187 | break; |
matirodriguez | 0:374ae6cd7a56 | 188 | } |
matirodriguez | 0:374ae6cd7a56 | 189 | } |
matirodriguez | 0:374ae6cd7a56 | 190 | |
matirodriguez | 0:374ae6cd7a56 | 191 | void interrupcion() |
matirodriguez | 0:374ae6cd7a56 | 192 | { |
matirodriguez | 0:374ae6cd7a56 | 193 | auxiliar_rpm++; // Valor para calcular los RPM, contiene las revoluciones por segundo que luego se multiplicarán por 60 |
matirodriguez | 0:374ae6cd7a56 | 194 | } |
matirodriguez | 0:374ae6cd7a56 | 195 | |
matirodriguez | 0:374ae6cd7a56 | 196 | void rpm_segundos() |
matirodriguez | 0:374ae6cd7a56 | 197 | { |
matirodriguez | 0:374ae6cd7a56 | 198 | |
matirodriguez | 0:374ae6cd7a56 | 199 | rpm = auxiliar_rpm * 60; // Las RPM son igual a las revoluciones por segundo * 60 segundos |
matirodriguez | 0:374ae6cd7a56 | 200 | |
matirodriguez | 0:374ae6cd7a56 | 201 | auxiliar_rpm = 0; // Reseteo la variable para una nueva medicion |
matirodriguez | 0:374ae6cd7a56 | 202 | |
matirodriguez | 0:374ae6cd7a56 | 203 | // Imprimo en pantalla el valor actual de RPM, la temperatura actual y el modo en el que se está trabajando. Este mismo |
matirodriguez | 0:374ae6cd7a56 | 204 | // depende del estado de la maquina de estados, asi que aplico ese metodo para imprimir en pantalla. Tambien, prendo un |
matirodriguez | 0:374ae6cd7a56 | 205 | // led distinto para cada modo de trabajo. |
matirodriguez | 0:374ae6cd7a56 | 206 | |
matirodriguez | 0:374ae6cd7a56 | 207 | printf("RPM: %i , ",rpm); |
matirodriguez | 0:374ae6cd7a56 | 208 | printf("T: %i\n",auxiliar_temperatura); |
matirodriguez | 0:374ae6cd7a56 | 209 | |
matirodriguez | 0:374ae6cd7a56 | 210 | switch(estado_maq_cooler) { |
matirodriguez | 0:374ae6cd7a56 | 211 | case LAZO_ABIERTO: |
matirodriguez | 0:374ae6cd7a56 | 212 | printf("Lazo abierto\n"); |
matirodriguez | 0:374ae6cd7a56 | 213 | ledverde = 0; |
matirodriguez | 0:374ae6cd7a56 | 214 | ledrojo = 1; |
matirodriguez | 0:374ae6cd7a56 | 215 | break; |
matirodriguez | 0:374ae6cd7a56 | 216 | case LAZO_CERRADO: |
matirodriguez | 0:374ae6cd7a56 | 217 | printf("Lazo cerrado\n"); |
matirodriguez | 0:374ae6cd7a56 | 218 | ledverde = 1; |
matirodriguez | 0:374ae6cd7a56 | 219 | ledrojo = 0; |
matirodriguez | 0:374ae6cd7a56 | 220 | break; |
matirodriguez | 0:374ae6cd7a56 | 221 | } |
matirodriguez | 0:374ae6cd7a56 | 222 | |
matirodriguez | 0:374ae6cd7a56 | 223 | } |
matirodriguez | 0:374ae6cd7a56 | 224 | |
matirodriguez | 0:374ae6cd7a56 | 225 | void set_motor() |
matirodriguez | 0:374ae6cd7a56 | 226 | { |
matirodriguez | 0:374ae6cd7a56 | 227 | // Seteo en la salida PWM el valor que corresponde, que ya se guardó en la maquina de estados |
matirodriguez | 0:374ae6cd7a56 | 228 | cooler.period(0.5f); |
matirodriguez | 0:374ae6cd7a56 | 229 | cooler.write(auxiliar_velocidad); |
matirodriguez | 0:374ae6cd7a56 | 230 | |
matirodriguez | 0:374ae6cd7a56 | 231 | } |
matirodriguez | 0:374ae6cd7a56 | 232 | |
matirodriguez | 0:374ae6cd7a56 | 233 | void LEER_TSI() |
matirodriguez | 0:374ae6cd7a56 | 234 | { |
matirodriguez | 0:374ae6cd7a56 | 235 | float auxiliar = 0; |
matirodriguez | 0:374ae6cd7a56 | 236 | auxiliar = tsi.readPercentage(); //Guardo de manera auxiliar el valor entre 0 y 1 del TSI |
matirodriguez | 0:374ae6cd7a56 | 237 | |
matirodriguez | 0:374ae6cd7a56 | 238 | // Asocio el valor del tsi numerico con un color, dividiendo en 4 valores posibles (0, <0.33, <0.66, <1) |
matirodriguez | 0:374ae6cd7a56 | 239 | if(auxiliar >= 0) { |
matirodriguez | 0:374ae6cd7a56 | 240 | teclado = NADA; |
matirodriguez | 0:374ae6cd7a56 | 241 | } |
matirodriguez | 0:374ae6cd7a56 | 242 | if((auxiliar > 0.05)&&(auxiliar <= 1)) { |
matirodriguez | 0:374ae6cd7a56 | 243 | teclado = PULSADO; |
matirodriguez | 0:374ae6cd7a56 | 244 | } |
matirodriguez | 0:374ae6cd7a56 | 245 | } |
matirodriguez | 0:374ae6cd7a56 | 246 | |
matirodriguez | 0:374ae6cd7a56 | 247 | void pulsacion_TSI() |
matirodriguez | 0:374ae6cd7a56 | 248 | { |
matirodriguez | 0:374ae6cd7a56 | 249 | if(var_pulsacion > 0) { |
matirodriguez | 0:374ae6cd7a56 | 250 | var_pulsacion--; |
matirodriguez | 0:374ae6cd7a56 | 251 | } |
matirodriguez | 0:374ae6cd7a56 | 252 | } |
matirodriguez | 0:374ae6cd7a56 | 253 | |
matirodriguez | 0:374ae6cd7a56 | 254 | void MAQ_lecturaTSI() |
matirodriguez | 0:374ae6cd7a56 | 255 | { |
matirodriguez | 0:374ae6cd7a56 | 256 | if(var_pulsacion < 1) { // Si se llegaron a los 2.5ms: |
matirodriguez | 0:374ae6cd7a56 | 257 | |
matirodriguez | 0:374ae6cd7a56 | 258 | var_pulsacion = 25; // Vuelvo a establecer 2.5ms para el proximo ciclo |
matirodriguez | 0:374ae6cd7a56 | 259 | |
matirodriguez | 0:374ae6cd7a56 | 260 | switch(estado_maq_tsi) { |
matirodriguez | 0:374ae6cd7a56 | 261 | case NADA: |
matirodriguez | 0:374ae6cd7a56 | 262 | ingreso = NADA; // La variable ingreso, salvo en el caso especifico, siempre se encontrará en NADA |
matirodriguez | 0:374ae6cd7a56 | 263 | |
matirodriguez | 0:374ae6cd7a56 | 264 | if(teclado==PULSADO) { |
matirodriguez | 0:374ae6cd7a56 | 265 | estado_maq_tsi = PULSADO; |
matirodriguez | 0:374ae6cd7a56 | 266 | ingreso = PULSADO; // El valor del TSI lo cambio en la transicion entre estados para asegurarme que solo se pueda leer 1 vez |
matirodriguez | 0:374ae6cd7a56 | 267 | } |
matirodriguez | 0:374ae6cd7a56 | 268 | break; |
matirodriguez | 0:374ae6cd7a56 | 269 | |
matirodriguez | 0:374ae6cd7a56 | 270 | case PULSADO: |
matirodriguez | 0:374ae6cd7a56 | 271 | if(teclado == NADA) { |
matirodriguez | 0:374ae6cd7a56 | 272 | estado_maq_tsi = NADA; |
matirodriguez | 0:374ae6cd7a56 | 273 | } |
matirodriguez | 0:374ae6cd7a56 | 274 | break; |
matirodriguez | 0:374ae6cd7a56 | 275 | } |
matirodriguez | 0:374ae6cd7a56 | 276 | } |
matirodriguez | 0:374ae6cd7a56 | 277 | } |