f

Dependencies:   mbed tsi_sensor

Committer:
guidoglorioso
Date:
Thu Dec 12 20:04:08 2019 +0000
Revision:
0:cd3f9689553a
f

Who changed what in which revision?

UserRevisionLine numberNew contents of line
guidoglorioso 0:cd3f9689553a 1 #include "mbed.h"
guidoglorioso 0:cd3f9689553a 2 #include "tsi_sensor.h"
guidoglorioso 0:cd3f9689553a 3
guidoglorioso 0:cd3f9689553a 4 #define INICIO 0
guidoglorioso 0:cd3f9689553a 5 #define RW 1
guidoglorioso 0:cd3f9689553a 6 #define DISP 2
guidoglorioso 0:cd3f9689553a 7 #define DISP_W 3
guidoglorioso 0:cd3f9689553a 8 #define DISP_R 4
guidoglorioso 0:cd3f9689553a 9 #define EST 5
guidoglorioso 0:cd3f9689553a 10 #define VERIF 6
guidoglorioso 0:cd3f9689553a 11 #define FIN 7
guidoglorioso 0:cd3f9689553a 12 #define PWMD 8
guidoglorioso 0:cd3f9689553a 13 #define PWMU 9
guidoglorioso 0:cd3f9689553a 14
guidoglorioso 0:cd3f9689553a 15 /* Cosas del TSI */
guidoglorioso 0:cd3f9689553a 16 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
guidoglorioso 0:cd3f9689553a 17 #define ELEC0 9
guidoglorioso 0:cd3f9689553a 18 #define ELEC1 10
guidoglorioso 0:cd3f9689553a 19 #elif defined (TARGET_KL05Z)
guidoglorioso 0:cd3f9689553a 20 #define ELEC0 9
guidoglorioso 0:cd3f9689553a 21 #define ELEC1 8
guidoglorioso 0:cd3f9689553a 22 #else
guidoglorioso 0:cd3f9689553a 23 #error TARGET NOT DEFINED
guidoglorioso 0:cd3f9689553a 24 #endif
guidoglorioso 0:cd3f9689553a 25
guidoglorioso 0:cd3f9689553a 26 //Definimos que el puerto serie se llama pc
guidoglorioso 0:cd3f9689553a 27 Serial pc(USBTX, USBRX);
guidoglorioso 0:cd3f9689553a 28
guidoglorioso 0:cd3f9689553a 29 //Variable donde se guarda lo recibido
guidoglorioso 0:cd3f9689553a 30 unsigned char c = '\0';
guidoglorioso 0:cd3f9689553a 31
guidoglorioso 0:cd3f9689553a 32 unsigned char slider=0, pote=0, verif;
guidoglorioso 0:cd3f9689553a 33
guidoglorioso 0:cd3f9689553a 34 //bit usado como flag para procesar datos
guidoglorioso 0:cd3f9689553a 35 bool newdata = false; //Se pone en true cuando hay nuevos datos
guidoglorioso 0:cd3f9689553a 36 bool ejec = false; //Se pone en true cuando hay una trama correcta
guidoglorioso 0:cd3f9689553a 37 unsigned char rec[7]= {0};
guidoglorioso 0:cd3f9689553a 38
guidoglorioso 0:cd3f9689553a 39 //Creamos los tres leds pra usar
guidoglorioso 0:cd3f9689553a 40 DigitalIn bt1(PTA4,PullUp);
guidoglorioso 0:cd3f9689553a 41 DigitalIn bt2(PTA5,PullUp);
guidoglorioso 0:cd3f9689553a 42 DigitalOut LR(LED1);
guidoglorioso 0:cd3f9689553a 43 DigitalOut LG(LED2);
guidoglorioso 0:cd3f9689553a 44 DigitalOut LB(LED3);
guidoglorioso 0:cd3f9689553a 45 AnalogIn analo(PTB0);
guidoglorioso 0:cd3f9689553a 46 AnalogOut pwm (PTE30);
guidoglorioso 0:cd3f9689553a 47
guidoglorioso 0:cd3f9689553a 48 //Callback cuando se detecta una entrada
guidoglorioso 0:cd3f9689553a 49 void onCharReceived()
guidoglorioso 0:cd3f9689553a 50 {
guidoglorioso 0:cd3f9689553a 51 //Copiamos lo leido en c
guidoglorioso 0:cd3f9689553a 52 c = pc.getc();
guidoglorioso 0:cd3f9689553a 53 newdata = true;
guidoglorioso 0:cd3f9689553a 54 }
guidoglorioso 0:cd3f9689553a 55
guidoglorioso 0:cd3f9689553a 56 bool recibiendo(void)
guidoglorioso 0:cd3f9689553a 57 {
guidoglorioso 0:cd3f9689553a 58 static unsigned char est=INICIO;
guidoglorioso 0:cd3f9689553a 59 switch(est) {
guidoglorioso 0:cd3f9689553a 60 default:
guidoglorioso 0:cd3f9689553a 61 case INICIO:
guidoglorioso 0:cd3f9689553a 62 if (c=='$') { //Si $ lo guardo en el char 0 de rec
guidoglorioso 0:cd3f9689553a 63 rec[0]=c;
guidoglorioso 0:cd3f9689553a 64 est=RW;
guidoglorioso 0:cd3f9689553a 65 }
guidoglorioso 0:cd3f9689553a 66 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 67 c = '\0';
guidoglorioso 0:cd3f9689553a 68 break;
guidoglorioso 0:cd3f9689553a 69
guidoglorioso 0:cd3f9689553a 70 case RW:
guidoglorioso 0:cd3f9689553a 71 if ((c=='W')||(c=='R')) { //Si W o R lo guardo en el char 1 de rec
guidoglorioso 0:cd3f9689553a 72
guidoglorioso 0:cd3f9689553a 73 rec[1]=c;
guidoglorioso 0:cd3f9689553a 74 est=DISP;
guidoglorioso 0:cd3f9689553a 75 } else {
guidoglorioso 0:cd3f9689553a 76 if(c=='P') {
guidoglorioso 0:cd3f9689553a 77 rec[1]=c;
guidoglorioso 0:cd3f9689553a 78 est=PWMD;
guidoglorioso 0:cd3f9689553a 79 } else {
guidoglorioso 0:cd3f9689553a 80 if(c=='$') {
guidoglorioso 0:cd3f9689553a 81 rec[0]=c;
guidoglorioso 0:cd3f9689553a 82 rec[1]=0;
guidoglorioso 0:cd3f9689553a 83 rec[2]=0;
guidoglorioso 0:cd3f9689553a 84 rec[3]=0;
guidoglorioso 0:cd3f9689553a 85 rec[4]=0;
guidoglorioso 0:cd3f9689553a 86 rec[5]=0;
guidoglorioso 0:cd3f9689553a 87 rec[6]=0;
guidoglorioso 0:cd3f9689553a 88 est=RW;
guidoglorioso 0:cd3f9689553a 89 } else {
guidoglorioso 0:cd3f9689553a 90 rec[0]=0;
guidoglorioso 0:cd3f9689553a 91 rec[1]=0;
guidoglorioso 0:cd3f9689553a 92 rec[2]=0;
guidoglorioso 0:cd3f9689553a 93 rec[3]=0;
guidoglorioso 0:cd3f9689553a 94 rec[4]=0;
guidoglorioso 0:cd3f9689553a 95 rec[5]=0;
guidoglorioso 0:cd3f9689553a 96 rec[6]=0;
guidoglorioso 0:cd3f9689553a 97 est=INICIO;
guidoglorioso 0:cd3f9689553a 98 }
guidoglorioso 0:cd3f9689553a 99 }
guidoglorioso 0:cd3f9689553a 100 }
guidoglorioso 0:cd3f9689553a 101 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 102 c = '\0';
guidoglorioso 0:cd3f9689553a 103 break;
guidoglorioso 0:cd3f9689553a 104
guidoglorioso 0:cd3f9689553a 105 case DISP:
guidoglorioso 0:cd3f9689553a 106 if ((rec[1]=='R')&&((c=='L')||(c=='A')||(c=='D'))) { //Si leo y recibo L, A o D lo guardo en el char 2 de rec
guidoglorioso 0:cd3f9689553a 107 rec[2]=c;
guidoglorioso 0:cd3f9689553a 108 est=DISP_R;
guidoglorioso 0:cd3f9689553a 109 } else {
guidoglorioso 0:cd3f9689553a 110 if ((rec[1]=='W')&&(c=='L')) { //Si escribo y recibo L lo guardo en el char 2 de rec
guidoglorioso 0:cd3f9689553a 111 rec[2]=c;
guidoglorioso 0:cd3f9689553a 112 est=DISP_W;
guidoglorioso 0:cd3f9689553a 113 } else {
guidoglorioso 0:cd3f9689553a 114 if(c=='P') {
guidoglorioso 0:cd3f9689553a 115 rec[2]=c;
guidoglorioso 0:cd3f9689553a 116 rec[3]=0;
guidoglorioso 0:cd3f9689553a 117 rec[4]=0;
guidoglorioso 0:cd3f9689553a 118 est=VERIF;
guidoglorioso 0:cd3f9689553a 119 } else {
guidoglorioso 0:cd3f9689553a 120 if(c=='$') {
guidoglorioso 0:cd3f9689553a 121 rec[0]=c;
guidoglorioso 0:cd3f9689553a 122 rec[1]=0;
guidoglorioso 0:cd3f9689553a 123 rec[2]=0;
guidoglorioso 0:cd3f9689553a 124 rec[3]=0;
guidoglorioso 0:cd3f9689553a 125 rec[4]=0;
guidoglorioso 0:cd3f9689553a 126 rec[5]=0;
guidoglorioso 0:cd3f9689553a 127 rec[6]=0;
guidoglorioso 0:cd3f9689553a 128 est=RW;
guidoglorioso 0:cd3f9689553a 129 } else {
guidoglorioso 0:cd3f9689553a 130 rec[0]=0;
guidoglorioso 0:cd3f9689553a 131 rec[1]=0;
guidoglorioso 0:cd3f9689553a 132 rec[2]=0;
guidoglorioso 0:cd3f9689553a 133 rec[3]=0;
guidoglorioso 0:cd3f9689553a 134 rec[4]=0;
guidoglorioso 0:cd3f9689553a 135 rec[5]=0;
guidoglorioso 0:cd3f9689553a 136 rec[6]=0;
guidoglorioso 0:cd3f9689553a 137 est=INICIO;
guidoglorioso 0:cd3f9689553a 138 }
guidoglorioso 0:cd3f9689553a 139 }
guidoglorioso 0:cd3f9689553a 140 }
guidoglorioso 0:cd3f9689553a 141 }
guidoglorioso 0:cd3f9689553a 142 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 143 c = '\0';
guidoglorioso 0:cd3f9689553a 144 break;
guidoglorioso 0:cd3f9689553a 145
guidoglorioso 0:cd3f9689553a 146 case DISP_W:
guidoglorioso 0:cd3f9689553a 147 if ((c=='R')||(c=='G')||(c=='B')) { //Si escribo y recibo G, B o R lo guardo en el char 3 de rec
guidoglorioso 0:cd3f9689553a 148 rec[3]=c;
guidoglorioso 0:cd3f9689553a 149 est=EST;
guidoglorioso 0:cd3f9689553a 150 } else {
guidoglorioso 0:cd3f9689553a 151 if(c=='$') {
guidoglorioso 0:cd3f9689553a 152 rec[0]=c;
guidoglorioso 0:cd3f9689553a 153 rec[1]=0;
guidoglorioso 0:cd3f9689553a 154 rec[2]=0;
guidoglorioso 0:cd3f9689553a 155 rec[3]=0;
guidoglorioso 0:cd3f9689553a 156 rec[4]=0;
guidoglorioso 0:cd3f9689553a 157 rec[5]=0;
guidoglorioso 0:cd3f9689553a 158 rec[6]=0;
guidoglorioso 0:cd3f9689553a 159 est=RW;
guidoglorioso 0:cd3f9689553a 160 } else {
guidoglorioso 0:cd3f9689553a 161 rec[0]=0;
guidoglorioso 0:cd3f9689553a 162 rec[1]=0;
guidoglorioso 0:cd3f9689553a 163 rec[2]=0;
guidoglorioso 0:cd3f9689553a 164 rec[3]=0;
guidoglorioso 0:cd3f9689553a 165 rec[4]=0;
guidoglorioso 0:cd3f9689553a 166 rec[5]=0;
guidoglorioso 0:cd3f9689553a 167 rec[6]=0;
guidoglorioso 0:cd3f9689553a 168 est=INICIO;
guidoglorioso 0:cd3f9689553a 169 }
guidoglorioso 0:cd3f9689553a 170 }
guidoglorioso 0:cd3f9689553a 171 c=0;
guidoglorioso 0:cd3f9689553a 172 break;
guidoglorioso 0:cd3f9689553a 173
guidoglorioso 0:cd3f9689553a 174 case DISP_R:
guidoglorioso 0:cd3f9689553a 175 if ((c=='1')||(c=='2')||(c=='3')) { //Si leo y recibo 1 o 2 lo guardo en el char 3 de rec
guidoglorioso 0:cd3f9689553a 176 rec[3]=c;
guidoglorioso 0:cd3f9689553a 177 rec[4]=0;
guidoglorioso 0:cd3f9689553a 178 est=VERIF;
guidoglorioso 0:cd3f9689553a 179 } else {
guidoglorioso 0:cd3f9689553a 180 if(c=='$') {
guidoglorioso 0:cd3f9689553a 181 rec[0]=c;
guidoglorioso 0:cd3f9689553a 182 rec[1]=0;
guidoglorioso 0:cd3f9689553a 183 rec[2]=0;
guidoglorioso 0:cd3f9689553a 184 rec[3]=0;
guidoglorioso 0:cd3f9689553a 185 rec[4]=0;
guidoglorioso 0:cd3f9689553a 186 rec[5]=0;
guidoglorioso 0:cd3f9689553a 187 rec[6]=0;
guidoglorioso 0:cd3f9689553a 188 est=RW;
guidoglorioso 0:cd3f9689553a 189 } else {
guidoglorioso 0:cd3f9689553a 190 rec[0]=0;
guidoglorioso 0:cd3f9689553a 191 rec[1]=0;
guidoglorioso 0:cd3f9689553a 192 rec[2]=0;
guidoglorioso 0:cd3f9689553a 193 rec[3]=0;
guidoglorioso 0:cd3f9689553a 194 rec[4]=0;
guidoglorioso 0:cd3f9689553a 195 rec[5]=0;
guidoglorioso 0:cd3f9689553a 196 rec[6]=0;
guidoglorioso 0:cd3f9689553a 197 est=INICIO;
guidoglorioso 0:cd3f9689553a 198 }
guidoglorioso 0:cd3f9689553a 199 }
guidoglorioso 0:cd3f9689553a 200 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 201 c=0;
guidoglorioso 0:cd3f9689553a 202 break;
guidoglorioso 0:cd3f9689553a 203
guidoglorioso 0:cd3f9689553a 204 case EST:
guidoglorioso 0:cd3f9689553a 205 if ((c=='1')||(c=='0')) { //Si escribo y recibo 1 o 0 lo guardo en el char 4 de rec
guidoglorioso 0:cd3f9689553a 206 rec[4]=c;
guidoglorioso 0:cd3f9689553a 207 est=VERIF;
guidoglorioso 0:cd3f9689553a 208 } else {
guidoglorioso 0:cd3f9689553a 209 if(c=='$') {
guidoglorioso 0:cd3f9689553a 210 rec[0]=c;
guidoglorioso 0:cd3f9689553a 211 rec[1]=0;
guidoglorioso 0:cd3f9689553a 212 rec[2]=0;
guidoglorioso 0:cd3f9689553a 213 rec[3]=0;
guidoglorioso 0:cd3f9689553a 214 rec[4]=0;
guidoglorioso 0:cd3f9689553a 215 rec[5]=0;
guidoglorioso 0:cd3f9689553a 216 rec[6]=0;
guidoglorioso 0:cd3f9689553a 217 est=RW;
guidoglorioso 0:cd3f9689553a 218 } else {
guidoglorioso 0:cd3f9689553a 219 rec[0]=0;
guidoglorioso 0:cd3f9689553a 220 rec[1]=0;
guidoglorioso 0:cd3f9689553a 221 rec[2]=0;
guidoglorioso 0:cd3f9689553a 222 rec[3]=0;
guidoglorioso 0:cd3f9689553a 223 rec[4]=0;
guidoglorioso 0:cd3f9689553a 224 rec[5]=0;
guidoglorioso 0:cd3f9689553a 225 rec[6]=0;
guidoglorioso 0:cd3f9689553a 226 est=INICIO;
guidoglorioso 0:cd3f9689553a 227 }
guidoglorioso 0:cd3f9689553a 228 }
guidoglorioso 0:cd3f9689553a 229 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 230 c=0;
guidoglorioso 0:cd3f9689553a 231 break;
guidoglorioso 0:cd3f9689553a 232
guidoglorioso 0:cd3f9689553a 233 case VERIF:
guidoglorioso 0:cd3f9689553a 234 if(c==verif) {
guidoglorioso 0:cd3f9689553a 235 rec[5]=c;//Guarda la verificacion de la trama en rec 5
guidoglorioso 0:cd3f9689553a 236 est=FIN;
guidoglorioso 0:cd3f9689553a 237 } else {
guidoglorioso 0:cd3f9689553a 238 if(c=='$') {
guidoglorioso 0:cd3f9689553a 239 rec[0]=c;
guidoglorioso 0:cd3f9689553a 240 rec[1]=0;
guidoglorioso 0:cd3f9689553a 241 rec[2]=0;
guidoglorioso 0:cd3f9689553a 242 rec[3]=0;
guidoglorioso 0:cd3f9689553a 243 rec[4]=0;
guidoglorioso 0:cd3f9689553a 244 rec[5]=0;
guidoglorioso 0:cd3f9689553a 245 rec[6]=0;
guidoglorioso 0:cd3f9689553a 246 est=RW;
guidoglorioso 0:cd3f9689553a 247 } else {
guidoglorioso 0:cd3f9689553a 248 rec[0]=0;
guidoglorioso 0:cd3f9689553a 249 rec[1]=0;
guidoglorioso 0:cd3f9689553a 250 rec[2]=0;
guidoglorioso 0:cd3f9689553a 251 rec[3]=0;
guidoglorioso 0:cd3f9689553a 252 rec[4]=0;
guidoglorioso 0:cd3f9689553a 253 rec[5]=0;
guidoglorioso 0:cd3f9689553a 254 rec[6]=0;
guidoglorioso 0:cd3f9689553a 255 est=INICIO;
guidoglorioso 0:cd3f9689553a 256 }
guidoglorioso 0:cd3f9689553a 257 }
guidoglorioso 0:cd3f9689553a 258 c=0;
guidoglorioso 0:cd3f9689553a 259 break;
guidoglorioso 0:cd3f9689553a 260
guidoglorioso 0:cd3f9689553a 261 case FIN:
guidoglorioso 0:cd3f9689553a 262 if(c=='!') { //Si recibo !0 lo guardo en el char 6 de rec
guidoglorioso 0:cd3f9689553a 263 rec[6]=c;
guidoglorioso 0:cd3f9689553a 264 est=INICIO;
guidoglorioso 0:cd3f9689553a 265 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 266 c=0;
guidoglorioso 0:cd3f9689553a 267 return (true);
guidoglorioso 0:cd3f9689553a 268 } else {
guidoglorioso 0:cd3f9689553a 269 if((c=='$')||((rec[5]=='$')&&((c=='W')||(c=='R')))) {
guidoglorioso 0:cd3f9689553a 270 if(c=='$') {
guidoglorioso 0:cd3f9689553a 271 rec[0]='$';
guidoglorioso 0:cd3f9689553a 272 rec[1]=0;
guidoglorioso 0:cd3f9689553a 273 rec[2]=0;
guidoglorioso 0:cd3f9689553a 274 rec[3]=0;
guidoglorioso 0:cd3f9689553a 275 rec[4]=0;
guidoglorioso 0:cd3f9689553a 276 rec[5]=0;
guidoglorioso 0:cd3f9689553a 277 rec[6]=0;
guidoglorioso 0:cd3f9689553a 278 est=RW;
guidoglorioso 0:cd3f9689553a 279 } else {
guidoglorioso 0:cd3f9689553a 280 rec[0]='$';
guidoglorioso 0:cd3f9689553a 281 rec[1]=c;
guidoglorioso 0:cd3f9689553a 282 rec[2]=0;
guidoglorioso 0:cd3f9689553a 283 rec[3]=0;
guidoglorioso 0:cd3f9689553a 284 rec[4]=0;
guidoglorioso 0:cd3f9689553a 285 rec[5]=0;
guidoglorioso 0:cd3f9689553a 286 rec[6]=0;
guidoglorioso 0:cd3f9689553a 287 est=DISP;
guidoglorioso 0:cd3f9689553a 288 }
guidoglorioso 0:cd3f9689553a 289 } else {
guidoglorioso 0:cd3f9689553a 290 rec[0]=0;
guidoglorioso 0:cd3f9689553a 291 rec[1]=0;
guidoglorioso 0:cd3f9689553a 292 rec[2]=0;
guidoglorioso 0:cd3f9689553a 293 rec[3]=0;
guidoglorioso 0:cd3f9689553a 294 rec[4]=0;
guidoglorioso 0:cd3f9689553a 295 rec[5]=0;
guidoglorioso 0:cd3f9689553a 296 rec[6]=0;
guidoglorioso 0:cd3f9689553a 297 est=INICIO;
guidoglorioso 0:cd3f9689553a 298 }
guidoglorioso 0:cd3f9689553a 299 }
guidoglorioso 0:cd3f9689553a 300 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 301 c=0;
guidoglorioso 0:cd3f9689553a 302 break;
guidoglorioso 0:cd3f9689553a 303
guidoglorioso 0:cd3f9689553a 304 case PWMD:
guidoglorioso 0:cd3f9689553a 305 if ((c>='0')&&(c<='9')) { //Si recibo de 0 a 9 o de A a F lo guardo en el char 2 de rec
guidoglorioso 0:cd3f9689553a 306 rec[2]=c;
guidoglorioso 0:cd3f9689553a 307 est=PWMU;
guidoglorioso 0:cd3f9689553a 308 } else {
guidoglorioso 0:cd3f9689553a 309 if(c=='$') {
guidoglorioso 0:cd3f9689553a 310 rec[0]=c;
guidoglorioso 0:cd3f9689553a 311 rec[1]=0;
guidoglorioso 0:cd3f9689553a 312 rec[2]=0;
guidoglorioso 0:cd3f9689553a 313 rec[3]=0;
guidoglorioso 0:cd3f9689553a 314 rec[4]=0;
guidoglorioso 0:cd3f9689553a 315 rec[5]=0;
guidoglorioso 0:cd3f9689553a 316 rec[6]=0;
guidoglorioso 0:cd3f9689553a 317 est=RW;
guidoglorioso 0:cd3f9689553a 318 } else {
guidoglorioso 0:cd3f9689553a 319 rec[0]=0;
guidoglorioso 0:cd3f9689553a 320 rec[1]=0;
guidoglorioso 0:cd3f9689553a 321 rec[2]=0;
guidoglorioso 0:cd3f9689553a 322 rec[3]=0;
guidoglorioso 0:cd3f9689553a 323 rec[4]=0;
guidoglorioso 0:cd3f9689553a 324 rec[5]=0;
guidoglorioso 0:cd3f9689553a 325 rec[6]=0;
guidoglorioso 0:cd3f9689553a 326 est=INICIO;
guidoglorioso 0:cd3f9689553a 327 }
guidoglorioso 0:cd3f9689553a 328 }
guidoglorioso 0:cd3f9689553a 329 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 330 c=0;
guidoglorioso 0:cd3f9689553a 331 break;
guidoglorioso 0:cd3f9689553a 332 case PWMU:
guidoglorioso 0:cd3f9689553a 333 if (((c>='0')&&(c<='9'))||((c>='A')&&(c<='F'))) { //Si recibo de 0 a 9 o de A a F lo guardo en el char 2 de rec
guidoglorioso 0:cd3f9689553a 334 rec[3]=c;
guidoglorioso 0:cd3f9689553a 335 est=VERIF;
guidoglorioso 0:cd3f9689553a 336 } else {
guidoglorioso 0:cd3f9689553a 337 if(c=='$') {
guidoglorioso 0:cd3f9689553a 338 rec[0]=c;
guidoglorioso 0:cd3f9689553a 339 rec[1]=0;
guidoglorioso 0:cd3f9689553a 340 rec[2]=0;
guidoglorioso 0:cd3f9689553a 341 rec[3]=0;
guidoglorioso 0:cd3f9689553a 342 rec[4]=0;
guidoglorioso 0:cd3f9689553a 343 rec[5]=0;
guidoglorioso 0:cd3f9689553a 344 rec[6]=0;
guidoglorioso 0:cd3f9689553a 345 est=RW;
guidoglorioso 0:cd3f9689553a 346 } else {
guidoglorioso 0:cd3f9689553a 347 rec[0]=0;
guidoglorioso 0:cd3f9689553a 348 rec[1]=0;
guidoglorioso 0:cd3f9689553a 349 rec[2]=0;
guidoglorioso 0:cd3f9689553a 350 rec[3]=0;
guidoglorioso 0:cd3f9689553a 351 rec[4]=0;
guidoglorioso 0:cd3f9689553a 352 rec[5]=0;
guidoglorioso 0:cd3f9689553a 353 rec[6]=0;
guidoglorioso 0:cd3f9689553a 354 est=INICIO;
guidoglorioso 0:cd3f9689553a 355 }
guidoglorioso 0:cd3f9689553a 356 }
guidoglorioso 0:cd3f9689553a 357 //Hacemos NULL c para que no vuelva a ejecutar
guidoglorioso 0:cd3f9689553a 358 c=0;
guidoglorioso 0:cd3f9689553a 359 break;
guidoglorioso 0:cd3f9689553a 360 }
guidoglorioso 0:cd3f9689553a 361 return (false);
guidoglorioso 0:cd3f9689553a 362 }
guidoglorioso 0:cd3f9689553a 363
guidoglorioso 0:cd3f9689553a 364 void interpretacion(void)
guidoglorioso 0:cd3f9689553a 365 {
guidoglorioso 0:cd3f9689553a 366 static unsigned char aux, aux2, aux3;
guidoglorioso 0:cd3f9689553a 367 if(rec[1]=='W') {
guidoglorioso 0:cd3f9689553a 368 if(rec[3]=='R') {
guidoglorioso 0:cd3f9689553a 369 if(rec[4]=='1')
guidoglorioso 0:cd3f9689553a 370 LR=0;
guidoglorioso 0:cd3f9689553a 371 if(rec[4]=='0')
guidoglorioso 0:cd3f9689553a 372 LR=1;
guidoglorioso 0:cd3f9689553a 373 printf("\n$RL1%d!\r\n",!LR);
guidoglorioso 0:cd3f9689553a 374 }
guidoglorioso 0:cd3f9689553a 375 if(rec[3]=='B') {
guidoglorioso 0:cd3f9689553a 376 if(rec[4]=='1')
guidoglorioso 0:cd3f9689553a 377 LB=0;
guidoglorioso 0:cd3f9689553a 378 if(rec[4]=='0')
guidoglorioso 0:cd3f9689553a 379 LB=1;
guidoglorioso 0:cd3f9689553a 380 printf("\n$RL3%d!\r\n",!LB);
guidoglorioso 0:cd3f9689553a 381 }
guidoglorioso 0:cd3f9689553a 382 if(rec[3]=='G') {
guidoglorioso 0:cd3f9689553a 383 if(rec[4]=='1')
guidoglorioso 0:cd3f9689553a 384 LG=0;
guidoglorioso 0:cd3f9689553a 385 if(rec[4]=='0')
guidoglorioso 0:cd3f9689553a 386 LG=1;
guidoglorioso 0:cd3f9689553a 387 printf("\n$RL2%d!\r\n",!LG);
guidoglorioso 0:cd3f9689553a 388 }
guidoglorioso 0:cd3f9689553a 389
guidoglorioso 0:cd3f9689553a 390 }
guidoglorioso 0:cd3f9689553a 391 if(rec[1]=='R') {
guidoglorioso 0:cd3f9689553a 392 if(rec[2]=='L') {
guidoglorioso 0:cd3f9689553a 393 if(rec[3]=='1')
guidoglorioso 0:cd3f9689553a 394 printf("\n$RL1%d!\r\n",!LR);
guidoglorioso 0:cd3f9689553a 395 if(rec[3]=='2')
guidoglorioso 0:cd3f9689553a 396 printf("\n$RL2%d!\r\n",!LG);
guidoglorioso 0:cd3f9689553a 397 if(rec[3]=='3')
guidoglorioso 0:cd3f9689553a 398 printf("\n$RL3%d!\r\n",!LB);
guidoglorioso 0:cd3f9689553a 399 }
guidoglorioso 0:cd3f9689553a 400 if(rec[2]=='A') {
guidoglorioso 0:cd3f9689553a 401 if(rec[3]=='1')
guidoglorioso 0:cd3f9689553a 402 printf("\n$RA1%02X!\r\n",slider);
guidoglorioso 0:cd3f9689553a 403 if(rec[3]=='2')
guidoglorioso 0:cd3f9689553a 404 printf("\n$RA2%02X!\r\n",pote);
guidoglorioso 0:cd3f9689553a 405 }
guidoglorioso 0:cd3f9689553a 406 if(rec[2]=='D') {
guidoglorioso 0:cd3f9689553a 407 if(rec[3]=='1')
guidoglorioso 0:cd3f9689553a 408 printf("\n$RD1%d!\r\n",!bt1);
guidoglorioso 0:cd3f9689553a 409 if(rec[3]=='2')
guidoglorioso 0:cd3f9689553a 410 printf("\n$RD2%d!\r\n",!bt2);
guidoglorioso 0:cd3f9689553a 411 }
guidoglorioso 0:cd3f9689553a 412 if(rec[2]=='P') {
guidoglorioso 0:cd3f9689553a 413 aux = pwm*100;
guidoglorioso 0:cd3f9689553a 414 printf("\n$P%02X!\r\n", aux);
guidoglorioso 0:cd3f9689553a 415 }
guidoglorioso 0:cd3f9689553a 416 }
guidoglorioso 0:cd3f9689553a 417 if (rec[1]=='P') {
guidoglorioso 0:cd3f9689553a 418 if (rec[3]>='A')
guidoglorioso 0:cd3f9689553a 419 aux3 = rec[3]-'A'+10;
guidoglorioso 0:cd3f9689553a 420 else
guidoglorioso 0:cd3f9689553a 421 aux3 = rec[3]-'0';
guidoglorioso 0:cd3f9689553a 422 aux2 = (16*(rec[2]-'0'))+aux3;
guidoglorioso 0:cd3f9689553a 423 pwm = (float) aux2/100;
guidoglorioso 0:cd3f9689553a 424 printf("\n$P%02X!\r\n", aux2);
guidoglorioso 0:cd3f9689553a 425 }
guidoglorioso 0:cd3f9689553a 426 }
guidoglorioso 0:cd3f9689553a 427
guidoglorioso 0:cd3f9689553a 428 int main()
guidoglorioso 0:cd3f9689553a 429 {
guidoglorioso 0:cd3f9689553a 430 //Apagamos los leds
guidoglorioso 0:cd3f9689553a 431 LG=1;
guidoglorioso 0:cd3f9689553a 432 LR=1;
guidoglorioso 0:cd3f9689553a 433 LB=1;
guidoglorioso 0:cd3f9689553a 434
guidoglorioso 0:cd3f9689553a 435 pwm=1;
guidoglorioso 0:cd3f9689553a 436
guidoglorioso 0:cd3f9689553a 437 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
guidoglorioso 0:cd3f9689553a 438
guidoglorioso 0:cd3f9689553a 439 //Ejecutar onCharReceived por cada entrada por puerto
guidoglorioso 0:cd3f9689553a 440 pc.attach(&onCharReceived);
guidoglorioso 0:cd3f9689553a 441
guidoglorioso 0:cd3f9689553a 442 while (true) {
guidoglorioso 0:cd3f9689553a 443 verif=rec[1]^rec[2]^rec[3];
guidoglorioso 0:cd3f9689553a 444 slider=255*tsi.readPercentage();
guidoglorioso 0:cd3f9689553a 445 pote=255*analo.read();
guidoglorioso 0:cd3f9689553a 446 if(newdata) {
guidoglorioso 0:cd3f9689553a 447 ejec=recibiendo();
guidoglorioso 0:cd3f9689553a 448 newdata = false;
guidoglorioso 0:cd3f9689553a 449 }
guidoglorioso 0:cd3f9689553a 450 if(ejec) {
guidoglorioso 0:cd3f9689553a 451 interpretacion();
guidoglorioso 0:cd3f9689553a 452 ejec=0;
guidoglorioso 0:cd3f9689553a 453 }
guidoglorioso 0:cd3f9689553a 454 }
guidoglorioso 0:cd3f9689553a 455 }