.

Dependencies:   mbed tsi_sensor MMA8451Q

Committer:
Naza00
Date:
Tue May 12 18:11:04 2020 +0000
Revision:
1:57b0bfa26afb
Parent:
0:6c94c5ac5e8c
AMICO ALONSO

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Naza00 0:6c94c5ac5e8c 1 #include "mbed.h"
Naza00 0:6c94c5ac5e8c 2 #include "MMA8451Q.h"
Naza00 1:57b0bfa26afb 3 #include "tsi_sensor.h"
Naza00 0:6c94c5ac5e8c 4
Naza00 0:6c94c5ac5e8c 5 #define ESPERA 0
Naza00 0:6c94c5ac5e8c 6 #define ORDEN 1
Naza00 0:6c94c5ac5e8c 7 #define FIN 2
Naza00 0:6c94c5ac5e8c 8
Naza00 0:6c94c5ac5e8c 9 #define X 0
Naza00 0:6c94c5ac5e8c 10 #define Y 1
Naza00 0:6c94c5ac5e8c 11 #define Z 2
Naza00 0:6c94c5ac5e8c 12 #define V 3
Naza00 0:6c94c5ac5e8c 13 #define S 4
Naza00 0:6c94c5ac5e8c 14
Naza00 1:57b0bfa26afb 15 #define DESHABILITADO 0
Naza00 1:57b0bfa26afb 16 #define HABILITADO 1
Naza00 1:57b0bfa26afb 17
Naza00 1:57b0bfa26afb 18 #define HAB_ON 0
Naza00 1:57b0bfa26afb 19 #define HAB_OFF_1 1
Naza00 1:57b0bfa26afb 20 #define HAB_OFF_2 2
Naza00 1:57b0bfa26afb 21
Naza00 1:57b0bfa26afb 22 #define DES_ON 0
Naza00 1:57b0bfa26afb 23 #define DES_OFF 1
Naza00 1:57b0bfa26afb 24
Naza00 1:57b0bfa26afb 25 #define ON 0
Naza00 1:57b0bfa26afb 26 #define OFF 1
Naza00 1:57b0bfa26afb 27
Naza00 1:57b0bfa26afb 28 /* This defines will be replaced by PinNames soon */
Naza00 1:57b0bfa26afb 29 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
Naza00 1:57b0bfa26afb 30 #define ELEC0 9
Naza00 1:57b0bfa26afb 31 #define ELEC1 10
Naza00 1:57b0bfa26afb 32 #elif defined (TARGET_KL05Z)
Naza00 1:57b0bfa26afb 33 #define ELEC0 9
Naza00 1:57b0bfa26afb 34 #define ELEC1 8
Naza00 1:57b0bfa26afb 35 #else
Naza00 1:57b0bfa26afb 36 #error TARGET NOT DEFINED
Naza00 1:57b0bfa26afb 37 #endif
Naza00 1:57b0bfa26afb 38
Naza00 1:57b0bfa26afb 39
Naza00 0:6c94c5ac5e8c 40 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
Naza00 0:6c94c5ac5e8c 41 PinName const SDA = PTE25;
Naza00 0:6c94c5ac5e8c 42 PinName const SCL = PTE24;
Naza00 0:6c94c5ac5e8c 43 #elif defined (TARGET_KL05Z)
Naza00 0:6c94c5ac5e8c 44 PinName const SDA = PTB4;
Naza00 0:6c94c5ac5e8c 45 PinName const SCL = PTB3;
Naza00 0:6c94c5ac5e8c 46 #elif defined (TARGET_K20D50M)
Naza00 0:6c94c5ac5e8c 47 PinName const SDA = PTB1;
Naza00 0:6c94c5ac5e8c 48 PinName const SCL = PTB0;
Naza00 0:6c94c5ac5e8c 49 #else
Naza00 0:6c94c5ac5e8c 50 #error TARGET NOT DEFINED
Naza00 0:6c94c5ac5e8c 51 #endif
Naza00 0:6c94c5ac5e8c 52 #define MMA8451_I2C_ADDRESS (0x1d<<1)
Naza00 0:6c94c5ac5e8c 53
Naza00 0:6c94c5ac5e8c 54 //Definimos que el puerto serie se llama pc
Naza00 0:6c94c5ac5e8c 55 Serial pc(USBTX, USBRX);
Naza00 0:6c94c5ac5e8c 56
Naza00 0:6c94c5ac5e8c 57 //Variable donde se guarda lo leido
Naza00 0:6c94c5ac5e8c 58 char c = '\0';
Naza00 0:6c94c5ac5e8c 59
Naza00 0:6c94c5ac5e8c 60 //bit usado como flag para procesar datos
Naza00 0:6c94c5ac5e8c 61 bool newdata = false; //Se pone en true cuando hay nuevos datos
Naza00 0:6c94c5ac5e8c 62
Naza00 0:6c94c5ac5e8c 63
Naza00 0:6c94c5ac5e8c 64 AnalogIn voltaje_entrada(PTC1);
Naza00 0:6c94c5ac5e8c 65 DigitalIn entrada_digital(PTC7);
Naza00 0:6c94c5ac5e8c 66
Naza00 0:6c94c5ac5e8c 67 DigitalOut led1(LED1);
Naza00 0:6c94c5ac5e8c 68 DigitalOut led2(LED2);
Naza00 1:57b0bfa26afb 69 DigitalOut led(LED3);
Naza00 0:6c94c5ac5e8c 70
Naza00 0:6c94c5ac5e8c 71 //Callback cuando se detecta una entrada
Naza00 0:6c94c5ac5e8c 72 void onCharReceived(){
Naza00 0:6c94c5ac5e8c 73
Naza00 0:6c94c5ac5e8c 74 //Copiamos lo leido en c
Naza00 0:6c94c5ac5e8c 75 c = pc.getc();
Naza00 0:6c94c5ac5e8c 76 newdata = true;
Naza00 0:6c94c5ac5e8c 77 }
Naza00 1:57b0bfa26afb 78
Naza00 1:57b0bfa26afb 79 Ticker tick;
Naza00 1:57b0bfa26afb 80
Naza00 0:6c94c5ac5e8c 81 //Funciones
Naza00 0:6c94c5ac5e8c 82 int acelerometro_x();
Naza00 0:6c94c5ac5e8c 83 int acelerometro_y();
Naza00 0:6c94c5ac5e8c 84 int acelerometro_z();
Naza00 0:6c94c5ac5e8c 85 int adc();
Naza00 0:6c94c5ac5e8c 86 int in_digital();
Naza00 0:6c94c5ac5e8c 87 int lrc();
Naza00 1:57b0bfa26afb 88 void led_deshabilitado();
Naza00 1:57b0bfa26afb 89 void led_habilitado();
Naza00 1:57b0bfa26afb 90 void timer();
Naza00 0:6c94c5ac5e8c 91
Naza00 0:6c94c5ac5e8c 92 int estado=ESPERA;
Naza00 0:6c94c5ac5e8c 93 float x,y,z;
Naza00 0:6c94c5ac5e8c 94 int valor_x; //
Naza00 0:6c94c5ac5e8c 95 int valor_y; // VALORES BIEN DEL ACELEROMETRO
Naza00 0:6c94c5ac5e8c 96 int valor_z; //
Naza00 0:6c94c5ac5e8c 97 unsigned int valor_adc;
Naza00 0:6c94c5ac5e8c 98 float in_analog; //VALOR BIEN DE LA ENTRADA ANALOGICA
Naza00 0:6c94c5ac5e8c 99 int valor_dig=0; // VALOR BIEN DE LA ENTRADA DIGITAL
Naza00 0:6c94c5ac5e8c 100 int valor_analog;
Naza00 0:6c94c5ac5e8c 101 char vector_respuesta[10]= {0};
Naza00 0:6c94c5ac5e8c 102 int decena_valor_medido=0,unidad_valor_medido=0;
Naza00 0:6c94c5ac5e8c 103 unsigned char valor_lrc=0;
Naza00 0:6c94c5ac5e8c 104 int orden=0,a=0,j=0;
Naza00 1:57b0bfa26afb 105 int tiempo_des=0,tiempo_hab=0,tiempo_rebote=0;
Naza00 1:57b0bfa26afb 106 char aux=0;
Naza00 1:57b0bfa26afb 107 int habilitacion=0;
Naza00 1:57b0bfa26afb 108 char estado_des = DES_ON;
Naza00 1:57b0bfa26afb 109 char estado_hab = HAB_ON,cont=1;
Naza00 0:6c94c5ac5e8c 110
Naza00 0:6c94c5ac5e8c 111 int main() {
Naza00 0:6c94c5ac5e8c 112
Naza00 1:57b0bfa26afb 113 tick.attach(&timer, 0.001);
Naza00 1:57b0bfa26afb 114
Naza00 1:57b0bfa26afb 115 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
Naza00 1:57b0bfa26afb 116
Naza00 1:57b0bfa26afb 117 char estado_hab = DESHABILITADO;
Naza00 1:57b0bfa26afb 118
Naza00 0:6c94c5ac5e8c 119 //Apagamos los leds
Naza00 0:6c94c5ac5e8c 120 led1 = 1;
Naza00 0:6c94c5ac5e8c 121 led2 = 1;
Naza00 1:57b0bfa26afb 122 led= 1;
Naza00 0:6c94c5ac5e8c 123
Naza00 0:6c94c5ac5e8c 124 //Ejecutar onCharReceived por cada entrada por puerto
Naza00 0:6c94c5ac5e8c 125 pc.attach(&onCharReceived);
Naza00 0:6c94c5ac5e8c 126
Naza00 0:6c94c5ac5e8c 127 while(true){
Naza00 1:57b0bfa26afb 128 switch(estado_hab){
Naza00 1:57b0bfa26afb 129 case DESHABILITADO:
Naza00 1:57b0bfa26afb 130 habilitacion=0;
Naza00 1:57b0bfa26afb 131 led_deshabilitado();
Naza00 1:57b0bfa26afb 132 if(tsi.readPercentage()!=0 && aux==0){
Naza00 1:57b0bfa26afb 133 tiempo_rebote=0;
Naza00 1:57b0bfa26afb 134 aux=1;
Naza00 1:57b0bfa26afb 135 }
Naza00 1:57b0bfa26afb 136 if(tiempo_rebote>=500 && aux==1){
Naza00 1:57b0bfa26afb 137 aux=0;
Naza00 1:57b0bfa26afb 138 estado_hab = HABILITADO;
Naza00 1:57b0bfa26afb 139 }
Naza00 1:57b0bfa26afb 140 break;
Naza00 1:57b0bfa26afb 141
Naza00 1:57b0bfa26afb 142 case HABILITADO:
Naza00 1:57b0bfa26afb 143 habilitacion=1;
Naza00 1:57b0bfa26afb 144 led_habilitado();
Naza00 1:57b0bfa26afb 145 if(tsi.readPercentage()!=0 && aux==0){
Naza00 1:57b0bfa26afb 146 tiempo_rebote=0;
Naza00 1:57b0bfa26afb 147 aux=1;
Naza00 1:57b0bfa26afb 148 }
Naza00 1:57b0bfa26afb 149 if(tiempo_rebote>=500 && aux==1){
Naza00 1:57b0bfa26afb 150 aux=0;
Naza00 1:57b0bfa26afb 151 estado_hab = DESHABILITADO;
Naza00 1:57b0bfa26afb 152 }
Naza00 1:57b0bfa26afb 153 break;
Naza00 1:57b0bfa26afb 154 }
Naza00 1:57b0bfa26afb 155
Naza00 1:57b0bfa26afb 156 if(newdata && habilitacion==1){
Naza00 0:6c94c5ac5e8c 157 newdata = false;
Naza00 0:6c94c5ac5e8c 158 switch(estado){
Naza00 0:6c94c5ac5e8c 159
Naza00 0:6c94c5ac5e8c 160 case ESPERA:
Naza00 0:6c94c5ac5e8c 161 if(c=='@'){
Naza00 0:6c94c5ac5e8c 162 estado=ORDEN;
Naza00 0:6c94c5ac5e8c 163 vector_respuesta[0]='@';
Naza00 0:6c94c5ac5e8c 164 c = '\0';
Naza00 0:6c94c5ac5e8c 165 }
Naza00 0:6c94c5ac5e8c 166 break;
Naza00 0:6c94c5ac5e8c 167
Naza00 0:6c94c5ac5e8c 168 case ORDEN:
Naza00 0:6c94c5ac5e8c 169 switch(c){
Naza00 0:6c94c5ac5e8c 170
Naza00 0:6c94c5ac5e8c 171 default:
Naza00 0:6c94c5ac5e8c 172 estado = ESPERA;
Naza00 0:6c94c5ac5e8c 173 break;
Naza00 0:6c94c5ac5e8c 174
Naza00 0:6c94c5ac5e8c 175 case 'X':
Naza00 0:6c94c5ac5e8c 176 acelerometro_x();
Naza00 0:6c94c5ac5e8c 177 vector_respuesta[1]='X';
Naza00 0:6c94c5ac5e8c 178
Naza00 0:6c94c5ac5e8c 179 vector_respuesta[2]=valor_x/10;
Naza00 0:6c94c5ac5e8c 180 vector_respuesta[3]=valor_x - (vector_respuesta[2] * 10);
Naza00 0:6c94c5ac5e8c 181
Naza00 0:6c94c5ac5e8c 182 a=vector_respuesta[2];
Naza00 0:6c94c5ac5e8c 183 j=vector_respuesta[3];
Naza00 0:6c94c5ac5e8c 184 orden='X';
Naza00 0:6c94c5ac5e8c 185
Naza00 0:6c94c5ac5e8c 186 lrc();
Naza00 0:6c94c5ac5e8c 187
Naza00 0:6c94c5ac5e8c 188 if(c=='%'){
Naza00 0:6c94c5ac5e8c 189 estado=FIN;
Naza00 0:6c94c5ac5e8c 190 }
Naza00 0:6c94c5ac5e8c 191
Naza00 0:6c94c5ac5e8c 192 c = '\0';
Naza00 0:6c94c5ac5e8c 193 break;
Naza00 0:6c94c5ac5e8c 194
Naza00 0:6c94c5ac5e8c 195 case 'Y':
Naza00 0:6c94c5ac5e8c 196 acelerometro_y();
Naza00 0:6c94c5ac5e8c 197 vector_respuesta[1]='Y';
Naza00 0:6c94c5ac5e8c 198
Naza00 0:6c94c5ac5e8c 199 vector_respuesta[2]=valor_y/10;
Naza00 0:6c94c5ac5e8c 200 vector_respuesta[3]=valor_y - (vector_respuesta[2] * 10);
Naza00 0:6c94c5ac5e8c 201
Naza00 0:6c94c5ac5e8c 202 a=vector_respuesta[2];
Naza00 0:6c94c5ac5e8c 203 j=vector_respuesta[3];
Naza00 0:6c94c5ac5e8c 204 orden='Y';
Naza00 0:6c94c5ac5e8c 205
Naza00 0:6c94c5ac5e8c 206 lrc();
Naza00 0:6c94c5ac5e8c 207
Naza00 0:6c94c5ac5e8c 208 if(c=='%'){
Naza00 0:6c94c5ac5e8c 209 estado=FIN;
Naza00 0:6c94c5ac5e8c 210 }
Naza00 0:6c94c5ac5e8c 211
Naza00 0:6c94c5ac5e8c 212 c = '\0';
Naza00 0:6c94c5ac5e8c 213 break;
Naza00 0:6c94c5ac5e8c 214
Naza00 0:6c94c5ac5e8c 215 case 'Z':
Naza00 0:6c94c5ac5e8c 216 acelerometro_z();
Naza00 0:6c94c5ac5e8c 217 vector_respuesta[1]='Z';
Naza00 0:6c94c5ac5e8c 218
Naza00 0:6c94c5ac5e8c 219 vector_respuesta[2]=valor_z/10;
Naza00 0:6c94c5ac5e8c 220 vector_respuesta[3]=valor_z - (vector_respuesta[2] * 10);
Naza00 0:6c94c5ac5e8c 221
Naza00 0:6c94c5ac5e8c 222 a=vector_respuesta[2];
Naza00 0:6c94c5ac5e8c 223 j=vector_respuesta[3];
Naza00 0:6c94c5ac5e8c 224 orden='Z';
Naza00 0:6c94c5ac5e8c 225
Naza00 0:6c94c5ac5e8c 226 lrc();
Naza00 0:6c94c5ac5e8c 227
Naza00 0:6c94c5ac5e8c 228 if(c=='%'){
Naza00 0:6c94c5ac5e8c 229 estado=FIN;
Naza00 0:6c94c5ac5e8c 230 }
Naza00 0:6c94c5ac5e8c 231
Naza00 0:6c94c5ac5e8c 232 c = '\0';
Naza00 0:6c94c5ac5e8c 233 break;
Naza00 0:6c94c5ac5e8c 234
Naza00 0:6c94c5ac5e8c 235 case 'V':
Naza00 0:6c94c5ac5e8c 236 adc();
Naza00 0:6c94c5ac5e8c 237 vector_respuesta[1]='V';
Naza00 0:6c94c5ac5e8c 238
Naza00 0:6c94c5ac5e8c 239 vector_respuesta[2]=valor_analog/10;
Naza00 0:6c94c5ac5e8c 240 vector_respuesta[3]=valor_analog-(vector_respuesta[2]*10);
Naza00 0:6c94c5ac5e8c 241
Naza00 0:6c94c5ac5e8c 242 a=vector_respuesta[2];
Naza00 0:6c94c5ac5e8c 243 j=vector_respuesta[3];
Naza00 0:6c94c5ac5e8c 244 orden='V';
Naza00 0:6c94c5ac5e8c 245
Naza00 0:6c94c5ac5e8c 246 lrc();
Naza00 0:6c94c5ac5e8c 247 wait_ms(250);
Naza00 0:6c94c5ac5e8c 248
Naza00 0:6c94c5ac5e8c 249 if(c=='%'){
Naza00 0:6c94c5ac5e8c 250 estado=FIN;
Naza00 0:6c94c5ac5e8c 251 }
Naza00 0:6c94c5ac5e8c 252
Naza00 0:6c94c5ac5e8c 253 c = '\0';
Naza00 0:6c94c5ac5e8c 254 break;
Naza00 0:6c94c5ac5e8c 255
Naza00 0:6c94c5ac5e8c 256 case 'S':
Naza00 0:6c94c5ac5e8c 257 in_digital();
Naza00 0:6c94c5ac5e8c 258 vector_respuesta[1]='S';
Naza00 0:6c94c5ac5e8c 259
Naza00 0:6c94c5ac5e8c 260 vector_respuesta[2]=0;
Naza00 0:6c94c5ac5e8c 261 vector_respuesta[3]=valor_dig;
Naza00 0:6c94c5ac5e8c 262 a=0;
Naza00 0:6c94c5ac5e8c 263 j=vector_respuesta[3];
Naza00 0:6c94c5ac5e8c 264 orden='S';
Naza00 0:6c94c5ac5e8c 265
Naza00 0:6c94c5ac5e8c 266 lrc();
Naza00 0:6c94c5ac5e8c 267 wait_ms(250);
Naza00 0:6c94c5ac5e8c 268
Naza00 0:6c94c5ac5e8c 269 if(c=='%'){
Naza00 0:6c94c5ac5e8c 270 estado=FIN;
Naza00 0:6c94c5ac5e8c 271 }
Naza00 0:6c94c5ac5e8c 272
Naza00 0:6c94c5ac5e8c 273 c = '\0';
Naza00 0:6c94c5ac5e8c 274 break;
Naza00 0:6c94c5ac5e8c 275
Naza00 0:6c94c5ac5e8c 276 case '@':
Naza00 0:6c94c5ac5e8c 277 break;
Naza00 0:6c94c5ac5e8c 278 }
Naza00 0:6c94c5ac5e8c 279 break;
Naza00 0:6c94c5ac5e8c 280
Naza00 0:6c94c5ac5e8c 281 case FIN:
Naza00 0:6c94c5ac5e8c 282 vector_respuesta[4]='%';
Naza00 0:6c94c5ac5e8c 283 printf("\r\n%c%c%d%d%x%c",vector_respuesta[0],vector_respuesta[1],vector_respuesta[2],vector_respuesta[3],valor_lrc,vector_respuesta[4]);
Naza00 0:6c94c5ac5e8c 284 estado=ESPERA;
Naza00 0:6c94c5ac5e8c 285 c = '\0';
Naza00 0:6c94c5ac5e8c 286 break;
Naza00 0:6c94c5ac5e8c 287
Naza00 0:6c94c5ac5e8c 288 } //switch
Naza00 0:6c94c5ac5e8c 289 }// if newdata
Naza00 0:6c94c5ac5e8c 290 } //while
Naza00 0:6c94c5ac5e8c 291 } //main
Naza00 0:6c94c5ac5e8c 292
Naza00 0:6c94c5ac5e8c 293
Naza00 0:6c94c5ac5e8c 294 int acelerometro_x(){
Naza00 0:6c94c5ac5e8c 295 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
Naza00 0:6c94c5ac5e8c 296 x = abs(acc.getAccX());
Naza00 0:6c94c5ac5e8c 297 wait(0.1f);
Naza00 0:6c94c5ac5e8c 298 valor_x=x*100;
Naza00 0:6c94c5ac5e8c 299 return valor_x;
Naza00 0:6c94c5ac5e8c 300 }
Naza00 0:6c94c5ac5e8c 301
Naza00 0:6c94c5ac5e8c 302 int acelerometro_y(){
Naza00 0:6c94c5ac5e8c 303 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
Naza00 0:6c94c5ac5e8c 304 y = abs(acc.getAccY());
Naza00 0:6c94c5ac5e8c 305 wait(0.1f);
Naza00 0:6c94c5ac5e8c 306 valor_y=y*100;
Naza00 0:6c94c5ac5e8c 307 return valor_y;
Naza00 0:6c94c5ac5e8c 308 }
Naza00 0:6c94c5ac5e8c 309
Naza00 0:6c94c5ac5e8c 310 int acelerometro_z(){
Naza00 0:6c94c5ac5e8c 311 MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);
Naza00 0:6c94c5ac5e8c 312 z = abs(acc.getAccZ());
Naza00 0:6c94c5ac5e8c 313 wait(0.1f);
Naza00 0:6c94c5ac5e8c 314 valor_z=z*100;
Naza00 0:6c94c5ac5e8c 315 return valor_z;
Naza00 0:6c94c5ac5e8c 316 }
Naza00 0:6c94c5ac5e8c 317
Naza00 0:6c94c5ac5e8c 318 int adc(){
Naza00 0:6c94c5ac5e8c 319 valor_adc = voltaje_entrada.read_u16();
Naza00 0:6c94c5ac5e8c 320 in_analog = valor_adc * (3.3f / 65535.0f);
Naza00 0:6c94c5ac5e8c 321 valor_analog = in_analog*10;
Naza00 0:6c94c5ac5e8c 322 return valor_analog;
Naza00 0:6c94c5ac5e8c 323 }
Naza00 0:6c94c5ac5e8c 324
Naza00 0:6c94c5ac5e8c 325 int in_digital(){
Naza00 0:6c94c5ac5e8c 326 if(entrada_digital==1)valor_dig=1;
Naza00 0:6c94c5ac5e8c 327 else valor_dig=0;
Naza00 0:6c94c5ac5e8c 328
Naza00 0:6c94c5ac5e8c 329 return valor_dig;
Naza00 0:6c94c5ac5e8c 330 }
Naza00 0:6c94c5ac5e8c 331
Naza00 0:6c94c5ac5e8c 332 int lrc(){
Naza00 0:6c94c5ac5e8c 333 int inicio= '@';
Naza00 0:6c94c5ac5e8c 334 valor_lrc=0;
Naza00 0:6c94c5ac5e8c 335 valor_lrc ^= inicio;
Naza00 0:6c94c5ac5e8c 336 valor_lrc ^= orden;
Naza00 0:6c94c5ac5e8c 337 valor_lrc ^= (a + 48);
Naza00 0:6c94c5ac5e8c 338 valor_lrc ^= (j + 48);
Naza00 0:6c94c5ac5e8c 339
Naza00 0:6c94c5ac5e8c 340 return valor_lrc;
Naza00 1:57b0bfa26afb 341 }
Naza00 1:57b0bfa26afb 342
Naza00 1:57b0bfa26afb 343 void led_deshabilitado(){
Naza00 1:57b0bfa26afb 344 switch(estado_des){
Naza00 1:57b0bfa26afb 345 case DES_ON:
Naza00 1:57b0bfa26afb 346 led=ON;
Naza00 1:57b0bfa26afb 347 if(tiempo_des==250){
Naza00 1:57b0bfa26afb 348 tiempo_des=0;
Naza00 1:57b0bfa26afb 349 estado_des=DES_OFF;
Naza00 1:57b0bfa26afb 350 }
Naza00 1:57b0bfa26afb 351 break;
Naza00 1:57b0bfa26afb 352
Naza00 1:57b0bfa26afb 353 case DES_OFF:
Naza00 1:57b0bfa26afb 354 led=OFF;
Naza00 1:57b0bfa26afb 355 if(tiempo_des==250){
Naza00 1:57b0bfa26afb 356 tiempo_des=0;
Naza00 1:57b0bfa26afb 357 estado_des=DES_ON;
Naza00 1:57b0bfa26afb 358 }
Naza00 1:57b0bfa26afb 359 break;
Naza00 1:57b0bfa26afb 360 }
Naza00 1:57b0bfa26afb 361 }
Naza00 1:57b0bfa26afb 362
Naza00 1:57b0bfa26afb 363 void led_habilitado(){
Naza00 1:57b0bfa26afb 364 switch(estado_hab){
Naza00 1:57b0bfa26afb 365 case HAB_ON:
Naza00 1:57b0bfa26afb 366 led=ON;
Naza00 1:57b0bfa26afb 367 if(tiempo_hab>=150 && cont<=2){
Naza00 1:57b0bfa26afb 368 cont++;
Naza00 1:57b0bfa26afb 369 tiempo_hab=0;
Naza00 1:57b0bfa26afb 370 estado_hab = HAB_OFF_1;
Naza00 1:57b0bfa26afb 371 }
Naza00 1:57b0bfa26afb 372 if(tiempo_hab>=150 && cont==3){
Naza00 1:57b0bfa26afb 373 tiempo_hab=0;
Naza00 1:57b0bfa26afb 374 estado_hab = HAB_OFF_2;
Naza00 1:57b0bfa26afb 375 }
Naza00 1:57b0bfa26afb 376 break;
Naza00 1:57b0bfa26afb 377
Naza00 1:57b0bfa26afb 378 case HAB_OFF_1:
Naza00 1:57b0bfa26afb 379 led=OFF;
Naza00 1:57b0bfa26afb 380 if(tiempo_hab==500){
Naza00 1:57b0bfa26afb 381 tiempo_hab=0;
Naza00 1:57b0bfa26afb 382 estado_hab = HAB_ON;
Naza00 1:57b0bfa26afb 383 }
Naza00 1:57b0bfa26afb 384 break;
Naza00 1:57b0bfa26afb 385
Naza00 1:57b0bfa26afb 386 case HAB_OFF_2:
Naza00 1:57b0bfa26afb 387 led=OFF;
Naza00 1:57b0bfa26afb 388 if(tiempo_hab==1000){
Naza00 1:57b0bfa26afb 389 cont=0;
Naza00 1:57b0bfa26afb 390 tiempo_hab=0;
Naza00 1:57b0bfa26afb 391 estado_hab = HAB_ON;
Naza00 1:57b0bfa26afb 392 }
Naza00 1:57b0bfa26afb 393 break;
Naza00 1:57b0bfa26afb 394 }
Naza00 1:57b0bfa26afb 395 }
Naza00 1:57b0bfa26afb 396
Naza00 1:57b0bfa26afb 397 void timer(){
Naza00 1:57b0bfa26afb 398 tiempo_rebote++;
Naza00 1:57b0bfa26afb 399 tiempo_des++;
Naza00 1:57b0bfa26afb 400 tiempo_hab++;
Naza00 0:6c94c5ac5e8c 401 }