
Es un programa de comunicacion serial que trabaja con habilitacion del tsi , en el que se pide desde una plataforma, con un protocolo con verificacion xor los valores de una entrada digital, una entradad analogica y los distintos ejes del accelerometro, a su vez se indica el funcionamiento del programa con 2 diferentes frecuencias de led
Dependencies: mbed tsi_sensor MMA8451Q
main.cpp@0:231d401c17dc, 2020-05-10 (annotated)
- Committer:
- nahue2k18
- Date:
- Sun May 10 19:56:11 2020 +0000
- Revision:
- 0:231d401c17dc
Es un programa serial que trabaja con habilitador del tsi, al que se le pueden pedir en forma de protocolo con verificacion xor, valores de una entrada digital, una entrada analogica y los diferentes ejes del acelerometro, con indicaciones led.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nahue2k18 | 0:231d401c17dc | 1 | #include "mbed.h" |
nahue2k18 | 0:231d401c17dc | 2 | #include "tsi_sensor.h" |
nahue2k18 | 0:231d401c17dc | 3 | #include "MMA8451Q.h" |
nahue2k18 | 0:231d401c17dc | 4 | |
nahue2k18 | 0:231d401c17dc | 5 | Serial pc(USBTX, USBRX); |
nahue2k18 | 0:231d401c17dc | 6 | |
nahue2k18 | 0:231d401c17dc | 7 | /* This defines will be replaced by PinNames soon */ |
nahue2k18 | 0:231d401c17dc | 8 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
nahue2k18 | 0:231d401c17dc | 9 | #define ELEC0 9 |
nahue2k18 | 0:231d401c17dc | 10 | #define ELEC1 10 |
nahue2k18 | 0:231d401c17dc | 11 | #elif defined (TARGET_KL05Z) |
nahue2k18 | 0:231d401c17dc | 12 | #define ELEC0 9 |
nahue2k18 | 0:231d401c17dc | 13 | #define ELEC1 8 |
nahue2k18 | 0:231d401c17dc | 14 | #else |
nahue2k18 | 0:231d401c17dc | 15 | #error TARGET NOT DEFINED |
nahue2k18 | 0:231d401c17dc | 16 | #endif |
nahue2k18 | 0:231d401c17dc | 17 | |
nahue2k18 | 0:231d401c17dc | 18 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40);//DECLARO TSI |
nahue2k18 | 0:231d401c17dc | 19 | |
nahue2k18 | 0:231d401c17dc | 20 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
nahue2k18 | 0:231d401c17dc | 21 | PinName const SDA = PTE25; |
nahue2k18 | 0:231d401c17dc | 22 | PinName const SCL = PTE24; |
nahue2k18 | 0:231d401c17dc | 23 | #elif defined (TARGET_KL05Z) |
nahue2k18 | 0:231d401c17dc | 24 | PinName const SDA = PTB4; |
nahue2k18 | 0:231d401c17dc | 25 | PinName const SCL = PTB3; |
nahue2k18 | 0:231d401c17dc | 26 | #elif defined (TARGET_K20D50M) |
nahue2k18 | 0:231d401c17dc | 27 | PinName const SDA = PTB1; |
nahue2k18 | 0:231d401c17dc | 28 | PinName const SCL = PTB0; |
nahue2k18 | 0:231d401c17dc | 29 | #else |
nahue2k18 | 0:231d401c17dc | 30 | #error TARGET NOT DEFINED |
nahue2k18 | 0:231d401c17dc | 31 | #endif |
nahue2k18 | 0:231d401c17dc | 32 | |
nahue2k18 | 0:231d401c17dc | 33 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
nahue2k18 | 0:231d401c17dc | 34 | |
nahue2k18 | 0:231d401c17dc | 35 | MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS);//DECLARO ACELEROMETRO |
nahue2k18 | 0:231d401c17dc | 36 | |
nahue2k18 | 0:231d401c17dc | 37 | Ticker ti;//DECLARO EL TIMER 1 |
nahue2k18 | 0:231d401c17dc | 38 | |
nahue2k18 | 0:231d401c17dc | 39 | DigitalOut LV(LED2); |
nahue2k18 | 0:231d401c17dc | 40 | AnalogIn ANALOGICA(A2); |
nahue2k18 | 0:231d401c17dc | 41 | DigitalIn ENTRADA (PTB10); |
nahue2k18 | 0:231d401c17dc | 42 | |
nahue2k18 | 0:231d401c17dc | 43 | //DECLARO MAQUINAS DE ESTADOS |
nahue2k18 | 0:231d401c17dc | 44 | void ME_SERIE_RECIBO(void); |
nahue2k18 | 0:231d401c17dc | 45 | void ME_SERIE_ENVIO(void); |
nahue2k18 | 0:231d401c17dc | 46 | void ME_LED_SERIE_ON(void); |
nahue2k18 | 0:231d401c17dc | 47 | void ME_LED_SERIE_OFF(void); |
nahue2k18 | 0:231d401c17dc | 48 | |
nahue2k18 | 0:231d401c17dc | 49 | //DECLARO FUNCIONES |
nahue2k18 | 0:231d401c17dc | 50 | void TSII(void);//FUNCION TSI |
nahue2k18 | 0:231d401c17dc | 51 | void ANALOGICO(void);//FUNCION DE LA ENTRADA ANALOGICA |
nahue2k18 | 0:231d401c17dc | 52 | void ACELEROMETRO(void);//FUNCION ACELEROMETRO |
nahue2k18 | 0:231d401c17dc | 53 | void tiempo(void);//FUNCION DEL TIMER |
nahue2k18 | 0:231d401c17dc | 54 | |
nahue2k18 | 0:231d401c17dc | 55 | //bit usado como flag para procesar datos |
nahue2k18 | 0:231d401c17dc | 56 | bool newdata = false; |
nahue2k18 | 0:231d401c17dc | 57 | |
nahue2k18 | 0:231d401c17dc | 58 | //VARIABLES DEL SERIE RECIBO |
nahue2k18 | 0:231d401c17dc | 59 | char c = '\0'; |
nahue2k18 | 0:231d401c17dc | 60 | |
nahue2k18 | 0:231d401c17dc | 61 | //Callback cuando se detecta una entrada |
nahue2k18 | 0:231d401c17dc | 62 | void onCharReceived() |
nahue2k18 | 0:231d401c17dc | 63 | { |
nahue2k18 | 0:231d401c17dc | 64 | //Copiamos lo leido en c |
nahue2k18 | 0:231d401c17dc | 65 | c = pc.getc(); |
nahue2k18 | 0:231d401c17dc | 66 | newdata = true; |
nahue2k18 | 0:231d401c17dc | 67 | } |
nahue2k18 | 0:231d401c17dc | 68 | |
nahue2k18 | 0:231d401c17dc | 69 | //VARIABLES DE SERIE RECIBO |
nahue2k18 | 0:231d401c17dc | 70 | int e_serie_recibo=0; |
nahue2k18 | 0:231d401c17dc | 71 | bool ok=0, recibo_A=0, recibo_$=0, recibo_V=0, recibo_D=0, recibo_1=0, recibo_X=0, recibo_Y=0, recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 72 | |
nahue2k18 | 0:231d401c17dc | 73 | //VARIABLES DE SERIE ENVIO |
nahue2k18 | 0:231d401c17dc | 74 | int e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 75 | |
nahue2k18 | 0:231d401c17dc | 76 | // VARIABLES DE LED SERIE ON |
nahue2k18 | 0:231d401c17dc | 77 | bool e_led_serie_on=0; |
nahue2k18 | 0:231d401c17dc | 78 | |
nahue2k18 | 0:231d401c17dc | 79 | // VARIABLES DE LED SERIE ON |
nahue2k18 | 0:231d401c17dc | 80 | bool e_led_serie_off=0; |
nahue2k18 | 0:231d401c17dc | 81 | |
nahue2k18 | 0:231d401c17dc | 82 | // VARIABLES DEL TSII |
nahue2k18 | 0:231d401c17dc | 83 | float j=0; |
nahue2k18 | 0:231d401c17dc | 84 | bool inicio=0; |
nahue2k18 | 0:231d401c17dc | 85 | |
nahue2k18 | 0:231d401c17dc | 86 | // VARIABLES DE LA ENTRADA ANALOGICA |
nahue2k18 | 0:231d401c17dc | 87 | int analog=0; |
nahue2k18 | 0:231d401c17dc | 88 | int analog_previa=0; |
nahue2k18 | 0:231d401c17dc | 89 | int analog_unidad=0, analog_decena=0; |
nahue2k18 | 0:231d401c17dc | 90 | int analog_unidad_ascii=0, analog_decena_ascii=0; |
nahue2k18 | 0:231d401c17dc | 91 | int analog_unidad_xor=0, analog_decena_xor=0; |
nahue2k18 | 0:231d401c17dc | 92 | |
nahue2k18 | 0:231d401c17dc | 93 | // VARIABLES DEL ACELEROMETRO |
nahue2k18 | 0:231d401c17dc | 94 | float x=0, y=0, z=0; |
nahue2k18 | 0:231d401c17dc | 95 | int x_previa=0, y_previa=0, z_previa=0; |
nahue2k18 | 0:231d401c17dc | 96 | int x_unidad=0, x_decena=0, y_unidad=0, y_decena=0, z_unidad=0, z_decena=0; |
nahue2k18 | 0:231d401c17dc | 97 | int unidad_x_ascii=0, decena_x_ascii=0, unidad_y_ascii=0, decena_y_ascii=0, unidad_z_ascii=0, decena_z_ascii=0; |
nahue2k18 | 0:231d401c17dc | 98 | int xor_x_decena=0, xor_y_decena=0, xor_z_decena=0, xor_x_unidad=0, xor_y_unidad=0, xor_z_unidad=0; |
nahue2k18 | 0:231d401c17dc | 99 | |
nahue2k18 | 0:231d401c17dc | 100 | // VARIABLES DEL TIMER |
nahue2k18 | 0:231d401c17dc | 101 | int t_tsii=0; |
nahue2k18 | 0:231d401c17dc | 102 | int t_led_serie_on=0; |
nahue2k18 | 0:231d401c17dc | 103 | int t_led_serie_off=0; |
nahue2k18 | 0:231d401c17dc | 104 | int main() |
nahue2k18 | 0:231d401c17dc | 105 | { |
nahue2k18 | 0:231d401c17dc | 106 | pc.attach(&onCharReceived); |
nahue2k18 | 0:231d401c17dc | 107 | LV=1; |
nahue2k18 | 0:231d401c17dc | 108 | ti.attach(&tiempo,0.05); |
nahue2k18 | 0:231d401c17dc | 109 | while(1) { |
nahue2k18 | 0:231d401c17dc | 110 | TSII(); |
nahue2k18 | 0:231d401c17dc | 111 | if(inicio==1) { |
nahue2k18 | 0:231d401c17dc | 112 | ME_SERIE_RECIBO(); |
nahue2k18 | 0:231d401c17dc | 113 | ME_SERIE_ENVIO(); |
nahue2k18 | 0:231d401c17dc | 114 | ME_LED_SERIE_ON(); |
nahue2k18 | 0:231d401c17dc | 115 | } else { |
nahue2k18 | 0:231d401c17dc | 116 | ME_LED_SERIE_OFF(); |
nahue2k18 | 0:231d401c17dc | 117 | } |
nahue2k18 | 0:231d401c17dc | 118 | } |
nahue2k18 | 0:231d401c17dc | 119 | } |
nahue2k18 | 0:231d401c17dc | 120 | |
nahue2k18 | 0:231d401c17dc | 121 | void ME_SERIE_RECIBO(void) |
nahue2k18 | 0:231d401c17dc | 122 | { |
nahue2k18 | 0:231d401c17dc | 123 | if (newdata) { |
nahue2k18 | 0:231d401c17dc | 124 | newdata=false; |
nahue2k18 | 0:231d401c17dc | 125 | switch(e_serie_recibo) { |
nahue2k18 | 0:231d401c17dc | 126 | default: |
nahue2k18 | 0:231d401c17dc | 127 | e_serie_recibo=0; |
nahue2k18 | 0:231d401c17dc | 128 | break; |
nahue2k18 | 0:231d401c17dc | 129 | case 0: |
nahue2k18 | 0:231d401c17dc | 130 | if(c=='$') { |
nahue2k18 | 0:231d401c17dc | 131 | e_serie_recibo=1; |
nahue2k18 | 0:231d401c17dc | 132 | recibo_$=1; |
nahue2k18 | 0:231d401c17dc | 133 | break; |
nahue2k18 | 0:231d401c17dc | 134 | } else { |
nahue2k18 | 0:231d401c17dc | 135 | printf("\n error de codigo\r\n"); |
nahue2k18 | 0:231d401c17dc | 136 | ok=0; |
nahue2k18 | 0:231d401c17dc | 137 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 138 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 139 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 140 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 141 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 142 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 143 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 144 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 145 | e_serie_recibo=0; |
nahue2k18 | 0:231d401c17dc | 146 | |
nahue2k18 | 0:231d401c17dc | 147 | } |
nahue2k18 | 0:231d401c17dc | 148 | break; |
nahue2k18 | 0:231d401c17dc | 149 | case 1: |
nahue2k18 | 0:231d401c17dc | 150 | if (c=='A') { |
nahue2k18 | 0:231d401c17dc | 151 | recibo_A=1; |
nahue2k18 | 0:231d401c17dc | 152 | e_serie_recibo=2; |
nahue2k18 | 0:231d401c17dc | 153 | break; |
nahue2k18 | 0:231d401c17dc | 154 | } else if(c=='V') { |
nahue2k18 | 0:231d401c17dc | 155 | recibo_V=1; |
nahue2k18 | 0:231d401c17dc | 156 | e_serie_recibo=2; |
nahue2k18 | 0:231d401c17dc | 157 | break; |
nahue2k18 | 0:231d401c17dc | 158 | } else if(c=='D') { |
nahue2k18 | 0:231d401c17dc | 159 | recibo_D=1; |
nahue2k18 | 0:231d401c17dc | 160 | e_serie_recibo=2; |
nahue2k18 | 0:231d401c17dc | 161 | break; |
nahue2k18 | 0:231d401c17dc | 162 | } else { |
nahue2k18 | 0:231d401c17dc | 163 | printf("\n error de codigo\r\n"); |
nahue2k18 | 0:231d401c17dc | 164 | ok=0; |
nahue2k18 | 0:231d401c17dc | 165 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 166 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 167 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 168 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 169 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 170 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 171 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 172 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 173 | e_serie_recibo=0; |
nahue2k18 | 0:231d401c17dc | 174 | } |
nahue2k18 | 0:231d401c17dc | 175 | break; |
nahue2k18 | 0:231d401c17dc | 176 | case 2: |
nahue2k18 | 0:231d401c17dc | 177 | if(c=='X') { |
nahue2k18 | 0:231d401c17dc | 178 | recibo_X=1; |
nahue2k18 | 0:231d401c17dc | 179 | e_serie_recibo=3; |
nahue2k18 | 0:231d401c17dc | 180 | break; |
nahue2k18 | 0:231d401c17dc | 181 | } else if(c=='Y') { |
nahue2k18 | 0:231d401c17dc | 182 | recibo_Y=1; |
nahue2k18 | 0:231d401c17dc | 183 | e_serie_recibo=3; |
nahue2k18 | 0:231d401c17dc | 184 | break; |
nahue2k18 | 0:231d401c17dc | 185 | } else if(c=='Z') { |
nahue2k18 | 0:231d401c17dc | 186 | recibo_Z=1; |
nahue2k18 | 0:231d401c17dc | 187 | e_serie_recibo=3; |
nahue2k18 | 0:231d401c17dc | 188 | break; |
nahue2k18 | 0:231d401c17dc | 189 | } else if(c=='1') { |
nahue2k18 | 0:231d401c17dc | 190 | recibo_1=1; |
nahue2k18 | 0:231d401c17dc | 191 | e_serie_recibo=3; |
nahue2k18 | 0:231d401c17dc | 192 | break; |
nahue2k18 | 0:231d401c17dc | 193 | } else { |
nahue2k18 | 0:231d401c17dc | 194 | printf("\n error de codigo\r\n"); |
nahue2k18 | 0:231d401c17dc | 195 | ok=0; |
nahue2k18 | 0:231d401c17dc | 196 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 197 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 198 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 199 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 200 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 201 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 202 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 203 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 204 | e_serie_recibo=0; |
nahue2k18 | 0:231d401c17dc | 205 | } |
nahue2k18 | 0:231d401c17dc | 206 | break; |
nahue2k18 | 0:231d401c17dc | 207 | case 3: |
nahue2k18 | 0:231d401c17dc | 208 | if(c=='%') { |
nahue2k18 | 0:231d401c17dc | 209 | ok=1; |
nahue2k18 | 0:231d401c17dc | 210 | e_serie_recibo=0; |
nahue2k18 | 0:231d401c17dc | 211 | } else { |
nahue2k18 | 0:231d401c17dc | 212 | printf("\n error de codigo\r\n"); |
nahue2k18 | 0:231d401c17dc | 213 | ok=0; |
nahue2k18 | 0:231d401c17dc | 214 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 215 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 216 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 217 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 218 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 219 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 220 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 221 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 222 | e_serie_recibo=0; |
nahue2k18 | 0:231d401c17dc | 223 | } |
nahue2k18 | 0:231d401c17dc | 224 | break; |
nahue2k18 | 0:231d401c17dc | 225 | } |
nahue2k18 | 0:231d401c17dc | 226 | |
nahue2k18 | 0:231d401c17dc | 227 | } |
nahue2k18 | 0:231d401c17dc | 228 | } |
nahue2k18 | 0:231d401c17dc | 229 | |
nahue2k18 | 0:231d401c17dc | 230 | void ME_SERIE_ENVIO(void) |
nahue2k18 | 0:231d401c17dc | 231 | { |
nahue2k18 | 0:231d401c17dc | 232 | if(ok==1) { |
nahue2k18 | 0:231d401c17dc | 233 | switch(e_serie_envio) { |
nahue2k18 | 0:231d401c17dc | 234 | default: |
nahue2k18 | 0:231d401c17dc | 235 | e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 236 | case 0: |
nahue2k18 | 0:231d401c17dc | 237 | if(recibo_$==1) { |
nahue2k18 | 0:231d401c17dc | 238 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 239 | e_serie_envio=1; |
nahue2k18 | 0:231d401c17dc | 240 | break; |
nahue2k18 | 0:231d401c17dc | 241 | } |
nahue2k18 | 0:231d401c17dc | 242 | break; |
nahue2k18 | 0:231d401c17dc | 243 | case 1: |
nahue2k18 | 0:231d401c17dc | 244 | if(recibo_A==1) { |
nahue2k18 | 0:231d401c17dc | 245 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 246 | e_serie_envio=2; |
nahue2k18 | 0:231d401c17dc | 247 | break; |
nahue2k18 | 0:231d401c17dc | 248 | } else if(recibo_V==1) { |
nahue2k18 | 0:231d401c17dc | 249 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 250 | e_serie_envio=3; |
nahue2k18 | 0:231d401c17dc | 251 | break; |
nahue2k18 | 0:231d401c17dc | 252 | } else if(recibo_D==1) { |
nahue2k18 | 0:231d401c17dc | 253 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 254 | e_serie_envio=4; |
nahue2k18 | 0:231d401c17dc | 255 | } |
nahue2k18 | 0:231d401c17dc | 256 | break; |
nahue2k18 | 0:231d401c17dc | 257 | case 2: |
nahue2k18 | 0:231d401c17dc | 258 | if(recibo_X==1) { |
nahue2k18 | 0:231d401c17dc | 259 | ACELEROMETRO(); |
nahue2k18 | 0:231d401c17dc | 260 | printf("\n $AX%d%d%x%% \r\n",x_decena,x_unidad,xor_x_unidad); |
nahue2k18 | 0:231d401c17dc | 261 | ok=0; |
nahue2k18 | 0:231d401c17dc | 262 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 263 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 264 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 265 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 266 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 267 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 268 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 269 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 270 | e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 271 | break; |
nahue2k18 | 0:231d401c17dc | 272 | } else if (recibo_Y==1) { |
nahue2k18 | 0:231d401c17dc | 273 | ACELEROMETRO(); |
nahue2k18 | 0:231d401c17dc | 274 | printf("\n $AY%d%d%x%% \r\n",y_decena,y_unidad,xor_y_unidad); |
nahue2k18 | 0:231d401c17dc | 275 | ok=0; |
nahue2k18 | 0:231d401c17dc | 276 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 277 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 278 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 279 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 280 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 281 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 282 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 283 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 284 | e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 285 | break; |
nahue2k18 | 0:231d401c17dc | 286 | } else if(recibo_Z==1) { |
nahue2k18 | 0:231d401c17dc | 287 | ACELEROMETRO(); |
nahue2k18 | 0:231d401c17dc | 288 | printf("\n $AZ%d%d%x%% \r\n",z_decena,z_unidad,xor_z_unidad); |
nahue2k18 | 0:231d401c17dc | 289 | ok=0; |
nahue2k18 | 0:231d401c17dc | 290 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 291 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 292 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 293 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 294 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 295 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 296 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 297 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 298 | e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 299 | } |
nahue2k18 | 0:231d401c17dc | 300 | break; |
nahue2k18 | 0:231d401c17dc | 301 | case 3: |
nahue2k18 | 0:231d401c17dc | 302 | if(recibo_1==1) { |
nahue2k18 | 0:231d401c17dc | 303 | ANALOGICO(); |
nahue2k18 | 0:231d401c17dc | 304 | printf("\n $V1%d%d%x%% \r\n",analog_decena,analog_unidad,analog_unidad_xor); |
nahue2k18 | 0:231d401c17dc | 305 | ok=0; |
nahue2k18 | 0:231d401c17dc | 306 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 307 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 308 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 309 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 310 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 311 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 312 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 313 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 314 | e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 315 | } |
nahue2k18 | 0:231d401c17dc | 316 | break; |
nahue2k18 | 0:231d401c17dc | 317 | case 4: |
nahue2k18 | 0:231d401c17dc | 318 | if(recibo_1==1) { |
nahue2k18 | 0:231d401c17dc | 319 | if(ENTRADA==1) { |
nahue2k18 | 0:231d401c17dc | 320 | printf("\n $D10174%% \r\n"); |
nahue2k18 | 0:231d401c17dc | 321 | ok=0; |
nahue2k18 | 0:231d401c17dc | 322 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 323 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 324 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 325 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 326 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 327 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 328 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 329 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 330 | e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 331 | break; |
nahue2k18 | 0:231d401c17dc | 332 | } else { |
nahue2k18 | 0:231d401c17dc | 333 | printf("\n $D10075%% \r\n"); |
nahue2k18 | 0:231d401c17dc | 334 | ok=0; |
nahue2k18 | 0:231d401c17dc | 335 | recibo_$=0; |
nahue2k18 | 0:231d401c17dc | 336 | recibo_A=0; |
nahue2k18 | 0:231d401c17dc | 337 | recibo_V=0; |
nahue2k18 | 0:231d401c17dc | 338 | recibo_D=0; |
nahue2k18 | 0:231d401c17dc | 339 | recibo_1=0; |
nahue2k18 | 0:231d401c17dc | 340 | recibo_X=0; |
nahue2k18 | 0:231d401c17dc | 341 | recibo_Y=0; |
nahue2k18 | 0:231d401c17dc | 342 | recibo_Z=0; |
nahue2k18 | 0:231d401c17dc | 343 | e_serie_envio=0; |
nahue2k18 | 0:231d401c17dc | 344 | break; |
nahue2k18 | 0:231d401c17dc | 345 | } |
nahue2k18 | 0:231d401c17dc | 346 | } |
nahue2k18 | 0:231d401c17dc | 347 | break; |
nahue2k18 | 0:231d401c17dc | 348 | } |
nahue2k18 | 0:231d401c17dc | 349 | } |
nahue2k18 | 0:231d401c17dc | 350 | } |
nahue2k18 | 0:231d401c17dc | 351 | |
nahue2k18 | 0:231d401c17dc | 352 | void ME_LED_SERIE_ON(void) |
nahue2k18 | 0:231d401c17dc | 353 | { |
nahue2k18 | 0:231d401c17dc | 354 | if(inicio==1) { |
nahue2k18 | 0:231d401c17dc | 355 | switch(e_led_serie_on) { |
nahue2k18 | 0:231d401c17dc | 356 | case 0: |
nahue2k18 | 0:231d401c17dc | 357 | LV=0; |
nahue2k18 | 0:231d401c17dc | 358 | if(t_led_serie_on>=3 && LV==0) { |
nahue2k18 | 0:231d401c17dc | 359 | t_led_serie_on=0; |
nahue2k18 | 0:231d401c17dc | 360 | e_led_serie_on=1; |
nahue2k18 | 0:231d401c17dc | 361 | } |
nahue2k18 | 0:231d401c17dc | 362 | break; |
nahue2k18 | 0:231d401c17dc | 363 | case 1: |
nahue2k18 | 0:231d401c17dc | 364 | LV=1; |
nahue2k18 | 0:231d401c17dc | 365 | if(t_led_serie_on>=10 && LV==1) { |
nahue2k18 | 0:231d401c17dc | 366 | t_led_serie_on=0; |
nahue2k18 | 0:231d401c17dc | 367 | e_led_serie_on=0; |
nahue2k18 | 0:231d401c17dc | 368 | } |
nahue2k18 | 0:231d401c17dc | 369 | break; |
nahue2k18 | 0:231d401c17dc | 370 | } |
nahue2k18 | 0:231d401c17dc | 371 | } |
nahue2k18 | 0:231d401c17dc | 372 | } |
nahue2k18 | 0:231d401c17dc | 373 | |
nahue2k18 | 0:231d401c17dc | 374 | void ME_LED_SERIE_OFF(void) |
nahue2k18 | 0:231d401c17dc | 375 | { |
nahue2k18 | 0:231d401c17dc | 376 | if(inicio==0) { |
nahue2k18 | 0:231d401c17dc | 377 | switch(e_led_serie_off) { |
nahue2k18 | 0:231d401c17dc | 378 | case 0: |
nahue2k18 | 0:231d401c17dc | 379 | LV=0; |
nahue2k18 | 0:231d401c17dc | 380 | if(t_led_serie_off>=5 && LV==0) { |
nahue2k18 | 0:231d401c17dc | 381 | t_led_serie_off=0; |
nahue2k18 | 0:231d401c17dc | 382 | e_led_serie_off=1; |
nahue2k18 | 0:231d401c17dc | 383 | } |
nahue2k18 | 0:231d401c17dc | 384 | break; |
nahue2k18 | 0:231d401c17dc | 385 | case 1: |
nahue2k18 | 0:231d401c17dc | 386 | LV=1; |
nahue2k18 | 0:231d401c17dc | 387 | if(t_led_serie_off>=5 && LV==1) { |
nahue2k18 | 0:231d401c17dc | 388 | t_led_serie_off=0; |
nahue2k18 | 0:231d401c17dc | 389 | e_led_serie_off=0; |
nahue2k18 | 0:231d401c17dc | 390 | } |
nahue2k18 | 0:231d401c17dc | 391 | break; |
nahue2k18 | 0:231d401c17dc | 392 | } |
nahue2k18 | 0:231d401c17dc | 393 | } |
nahue2k18 | 0:231d401c17dc | 394 | } |
nahue2k18 | 0:231d401c17dc | 395 | |
nahue2k18 | 0:231d401c17dc | 396 | void TSII(void) |
nahue2k18 | 0:231d401c17dc | 397 | { |
nahue2k18 | 0:231d401c17dc | 398 | j=tsi.readPercentage(); |
nahue2k18 | 0:231d401c17dc | 399 | if(j>0.01 && t_tsii==0) { |
nahue2k18 | 0:231d401c17dc | 400 | inicio=!inicio; |
nahue2k18 | 0:231d401c17dc | 401 | t_tsii=3; |
nahue2k18 | 0:231d401c17dc | 402 | } |
nahue2k18 | 0:231d401c17dc | 403 | } |
nahue2k18 | 0:231d401c17dc | 404 | |
nahue2k18 | 0:231d401c17dc | 405 | void ANALOGICO(void) |
nahue2k18 | 0:231d401c17dc | 406 | { |
nahue2k18 | 0:231d401c17dc | 407 | analog=ANALOGICA.read_u16(); |
nahue2k18 | 0:231d401c17dc | 408 | //USO REGLA DE 3 |
nahue2k18 | 0:231d401c17dc | 409 | analog_previa=(analog*33)/65536; |
nahue2k18 | 0:231d401c17dc | 410 | //DIVIDO UNIADADES Y DECENAS |
nahue2k18 | 0:231d401c17dc | 411 | analog_decena=analog_previa/10; |
nahue2k18 | 0:231d401c17dc | 412 | analog_unidad=analog_previa-(analog_decena*10); |
nahue2k18 | 0:231d401c17dc | 413 | //PASO A ASCII |
nahue2k18 | 0:231d401c17dc | 414 | analog_decena_ascii=analog_decena+48; |
nahue2k18 | 0:231d401c17dc | 415 | analog_unidad_ascii=analog_unidad+48; |
nahue2k18 | 0:231d401c17dc | 416 | //PASO A XOR PARA VERIFICACION |
nahue2k18 | 0:231d401c17dc | 417 | analog_decena_xor = analog_decena_ascii ^ 103; |
nahue2k18 | 0:231d401c17dc | 418 | analog_unidad_xor = analog_decena_xor ^ analog_unidad_ascii; |
nahue2k18 | 0:231d401c17dc | 419 | |
nahue2k18 | 0:231d401c17dc | 420 | } |
nahue2k18 | 0:231d401c17dc | 421 | |
nahue2k18 | 0:231d401c17dc | 422 | void ACELEROMETRO(void) |
nahue2k18 | 0:231d401c17dc | 423 | { |
nahue2k18 | 0:231d401c17dc | 424 | x = abs(acc.getAccX()); |
nahue2k18 | 0:231d401c17dc | 425 | y = abs(acc.getAccY()); |
nahue2k18 | 0:231d401c17dc | 426 | z = abs(acc.getAccZ()); |
nahue2k18 | 0:231d401c17dc | 427 | |
nahue2k18 | 0:231d401c17dc | 428 | x_previa= x*10; |
nahue2k18 | 0:231d401c17dc | 429 | //DIVIDO UNIADADES Y DECENAS |
nahue2k18 | 0:231d401c17dc | 430 | x_decena=x_previa/10; |
nahue2k18 | 0:231d401c17dc | 431 | x_unidad=x_previa-(x_decena*10); |
nahue2k18 | 0:231d401c17dc | 432 | //PASO A ASCII |
nahue2k18 | 0:231d401c17dc | 433 | decena_x_ascii= x_decena+48; |
nahue2k18 | 0:231d401c17dc | 434 | unidad_x_ascii= x_unidad+48; |
nahue2k18 | 0:231d401c17dc | 435 | //PASO A XOR PARA VERIFICACION |
nahue2k18 | 0:231d401c17dc | 436 | xor_x_decena= 25 ^ decena_x_ascii; |
nahue2k18 | 0:231d401c17dc | 437 | xor_x_unidad=xor_x_decena ^ unidad_x_ascii; |
nahue2k18 | 0:231d401c17dc | 438 | |
nahue2k18 | 0:231d401c17dc | 439 | y_previa= y*10; |
nahue2k18 | 0:231d401c17dc | 440 | //DIVIDO UNIADADES Y DECENAS |
nahue2k18 | 0:231d401c17dc | 441 | y_decena=y_previa/10; |
nahue2k18 | 0:231d401c17dc | 442 | y_unidad=y_previa-(y_decena*10); |
nahue2k18 | 0:231d401c17dc | 443 | //PASO A ASCII |
nahue2k18 | 0:231d401c17dc | 444 | decena_y_ascii= y_decena+48; |
nahue2k18 | 0:231d401c17dc | 445 | unidad_y_ascii= y_unidad+48; |
nahue2k18 | 0:231d401c17dc | 446 | //PASO A XOR PARA VERIFICACION |
nahue2k18 | 0:231d401c17dc | 447 | xor_y_decena= 24 ^ decena_y_ascii; |
nahue2k18 | 0:231d401c17dc | 448 | xor_y_unidad=xor_y_decena ^ unidad_y_ascii; |
nahue2k18 | 0:231d401c17dc | 449 | |
nahue2k18 | 0:231d401c17dc | 450 | z_previa= z*10; |
nahue2k18 | 0:231d401c17dc | 451 | //DIVIDO UNIADADES Y DECENAS |
nahue2k18 | 0:231d401c17dc | 452 | z_decena=z_previa/10; |
nahue2k18 | 0:231d401c17dc | 453 | z_unidad=z_previa-(z_decena*10); |
nahue2k18 | 0:231d401c17dc | 454 | //PASO A ASCII |
nahue2k18 | 0:231d401c17dc | 455 | decena_z_ascii= z_decena+48; |
nahue2k18 | 0:231d401c17dc | 456 | unidad_z_ascii= z_unidad+48; |
nahue2k18 | 0:231d401c17dc | 457 | //PASO A XOR PARA VERIFICACION |
nahue2k18 | 0:231d401c17dc | 458 | xor_z_decena = 27 ^ decena_z_ascii; |
nahue2k18 | 0:231d401c17dc | 459 | xor_z_unidad = xor_z_decena ^ unidad_z_ascii; |
nahue2k18 | 0:231d401c17dc | 460 | |
nahue2k18 | 0:231d401c17dc | 461 | } |
nahue2k18 | 0:231d401c17dc | 462 | |
nahue2k18 | 0:231d401c17dc | 463 | void tiempo(void) |
nahue2k18 | 0:231d401c17dc | 464 | { |
nahue2k18 | 0:231d401c17dc | 465 | t_led_serie_off++; |
nahue2k18 | 0:231d401c17dc | 466 | t_led_serie_on++; |
nahue2k18 | 0:231d401c17dc | 467 | t_tsii--; |
nahue2k18 | 0:231d401c17dc | 468 | if(t_tsii <=0) { |
nahue2k18 | 0:231d401c17dc | 469 | t_tsii=0; |
nahue2k18 | 0:231d401c17dc | 470 | } |
nahue2k18 | 0:231d401c17dc | 471 | } |