Yair Almanza Armenta / Mbed 2 deprecated Vivoxie_daniel

Dependencies:   C12832 mbed

Fork of Vivoxie by J Daniel Martinez C

Committer:
dan_cuspi
Date:
Tue Jul 21 21:37:41 2015 +0000
Revision:
0:149a086d663b
Vivoxie

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_cuspi 0:149a086d663b 1 #include "mbed.h"
dan_cuspi 0:149a086d663b 2
dan_cuspi 0:149a086d663b 3 //PwmOut myled(LED1);
dan_cuspi 0:149a086d663b 4 //PwmOut myled2(LED2);
dan_cuspi 0:149a086d663b 5 //PwmOut myled3(LED3);
dan_cuspi 0:149a086d663b 6 //PwmOut myled4(LED4);
dan_cuspi 0:149a086d663b 7
dan_cuspi 0:149a086d663b 8
dan_cuspi 0:149a086d663b 9 Serial Pc(USBTX, USBRX);
dan_cuspi 0:149a086d663b 10 Serial Pc2(p13,p14);
dan_cuspi 0:149a086d663b 11 ///Configuracion de mano izquierda
dan_cuspi 0:149a086d663b 12 //Voice Coil
dan_cuspi 0:149a086d663b 13 //Dedo medio buffer1 SLP
dan_cuspi 0:149a086d663b 14 DigitalOut voice1(p5);
dan_cuspi 0:149a086d663b 15 //Dedo indice buffer2 SLP
dan_cuspi 0:149a086d663b 16 DigitalOut voice2(p6);
dan_cuspi 0:149a086d663b 17 //Dedo pulgar buffer3 SLP
dan_cuspi 0:149a086d663b 18 DigitalOut voice3(p7);
dan_cuspi 0:149a086d663b 19 //PWM buffer1,buffer2 y buffer3
dan_cuspi 0:149a086d663b 20 PwmOut pwm_buffer123(p21);
dan_cuspi 0:149a086d663b 21
dan_cuspi 0:149a086d663b 22
dan_cuspi 0:149a086d663b 23
dan_cuspi 0:149a086d663b 24 ///Configuracion de mano izquierda
dan_cuspi 0:149a086d663b 25 //Celdas Peltier
dan_cuspi 0:149a086d663b 26 //Dedo medio C1 SLP
dan_cuspi 0:149a086d663b 27 DigitalOut cel1(p8);
dan_cuspi 0:149a086d663b 28 //Dedo indice C2 SLP
dan_cuspi 0:149a086d663b 29 DigitalOut cel2(p9);
dan_cuspi 0:149a086d663b 30 //Dedo pulgar C3 SLP
dan_cuspi 0:149a086d663b 31 DigitalOut cel3(p10);
dan_cuspi 0:149a086d663b 32 //PH 1,2 y 3
dan_cuspi 0:149a086d663b 33 DigitalOut cel_PH123(p11);
dan_cuspi 0:149a086d663b 34 //PWM C1,C2 y C3
dan_cuspi 0:149a086d663b 35 PwmOut pwm_cel123(p23);
dan_cuspi 0:149a086d663b 36
dan_cuspi 0:149a086d663b 37 ///Configuracion de mano derecha
dan_cuspi 0:149a086d663b 38 //Voice Coil
dan_cuspi 0:149a086d663b 39 //Dedo medio V6
dan_cuspi 0:149a086d663b 40 DigitalOut voice6(p28);
dan_cuspi 0:149a086d663b 41 //Dedo indice buffer5
dan_cuspi 0:149a086d663b 42 DigitalOut voice5(p29);
dan_cuspi 0:149a086d663b 43 //Dedo pulgar buffer4
dan_cuspi 0:149a086d663b 44 DigitalOut voice4(p30);
dan_cuspi 0:149a086d663b 45 //PWM buffer4,buffer5 y V6
dan_cuspi 0:149a086d663b 46 PwmOut pwm_buffer456(p22);
dan_cuspi 0:149a086d663b 47
dan_cuspi 0:149a086d663b 48
dan_cuspi 0:149a086d663b 49 //Celdas Peltier
dan_cuspi 0:149a086d663b 50 //Dedo medio C6 SLP
dan_cuspi 0:149a086d663b 51 DigitalOut cel6(p25);
dan_cuspi 0:149a086d663b 52 //Dedo indice C5
dan_cuspi 0:149a086d663b 53 DigitalOut cel5(p26);
dan_cuspi 0:149a086d663b 54 //Dedo pulgar C4
dan_cuspi 0:149a086d663b 55 DigitalOut cel4(p27);
dan_cuspi 0:149a086d663b 56 //PH 4,5 y 6
dan_cuspi 0:149a086d663b 57 DigitalOut cel_PH456(p12);
dan_cuspi 0:149a086d663b 58 //PWM C4,C5 y C6
dan_cuspi 0:149a086d663b 59 PwmOut pwm_cel456(p24);
dan_cuspi 0:149a086d663b 60
dan_cuspi 0:149a086d663b 61
dan_cuspi 0:149a086d663b 62
dan_cuspi 0:149a086d663b 63
dan_cuspi 0:149a086d663b 64 //Declaracion de variables
dan_cuspi 0:149a086d663b 65 float x=0; //variable de control de PWM y Frecuencia
dan_cuspi 0:149a086d663b 66 float j=0.3; //variable PWM fijo Indice
dan_cuspi 0:149a086d663b 67 float h=0.3; //variable PWM fijo Pulgar
dan_cuspi 0:149a086d663b 68
dan_cuspi 0:149a086d663b 69 ///Variables de temperatura
dan_cuspi 0:149a086d663b 70 float caliente=0;
dan_cuspi 0:149a086d663b 71 float frio=0;
dan_cuspi 0:149a086d663b 72 ///
dan_cuspi 0:149a086d663b 73 char Data[10],Tacto1[10],Temp1[10],ID1[10],Tacto2[10],Temp2[10],ID2[10];
dan_cuspi 0:149a086d663b 74
dan_cuspi 0:149a086d663b 75 int buffer0,buffer1,buffer2,buffer3,buffer4,buffer5;
dan_cuspi 0:149a086d663b 76
dan_cuspi 0:149a086d663b 77 char K[100];
dan_cuspi 0:149a086d663b 78
dan_cuspi 0:149a086d663b 79
dan_cuspi 0:149a086d663b 80
dan_cuspi 0:149a086d663b 81 int main() {
dan_cuspi 0:149a086d663b 82 Pc.baud(115200);
dan_cuspi 0:149a086d663b 83 Pc2.baud(115200);
dan_cuspi 0:149a086d663b 84 voice1=0; //desaHabilitamos SlP
dan_cuspi 0:149a086d663b 85 cel1=0;
dan_cuspi 0:149a086d663b 86 voice2=0; //desaHabilitamos SlP
dan_cuspi 0:149a086d663b 87 cel2=0;
dan_cuspi 0:149a086d663b 88 voice3=0; //desaHabilitamos SlP
dan_cuspi 0:149a086d663b 89 cel3=0;
dan_cuspi 0:149a086d663b 90 voice4=0; //desaHabilitamos SlP
dan_cuspi 0:149a086d663b 91 cel4=0;
dan_cuspi 0:149a086d663b 92 voice5=0; //desaHabilitamos SlP
dan_cuspi 0:149a086d663b 93 cel5=0;
dan_cuspi 0:149a086d663b 94 voice6=0; //desaHabilitamos SlP
dan_cuspi 0:149a086d663b 95 cel6=0;
dan_cuspi 0:149a086d663b 96
dan_cuspi 0:149a086d663b 97
dan_cuspi 0:149a086d663b 98 while(1) {
dan_cuspi 0:149a086d663b 99
dan_cuspi 0:149a086d663b 100 if (Pc.readable())
dan_cuspi 0:149a086d663b 101 {
dan_cuspi 0:149a086d663b 102 Pc.scanf("%s", &K);
dan_cuspi 0:149a086d663b 103
dan_cuspi 0:149a086d663b 104 // Pc2.printf("%s\n ",&K);
dan_cuspi 0:149a086d663b 105 //wait(5);
dan_cuspi 0:149a086d663b 106 strcpy(Tacto1, strtok(K , ","));
dan_cuspi 0:149a086d663b 107 strcpy(Temp1, strtok(NULL , ","));
dan_cuspi 0:149a086d663b 108 strcpy(ID1, strtok(NULL, ","));
dan_cuspi 0:149a086d663b 109 strcpy(Tacto2, strtok(NULL, ","));
dan_cuspi 0:149a086d663b 110 strcpy(Temp2, strtok(NULL, ","));
dan_cuspi 0:149a086d663b 111 strcpy(ID2, strtok(NULL, ","));
dan_cuspi 0:149a086d663b 112
dan_cuspi 0:149a086d663b 113 buffer0 = atoi(Tacto1);
dan_cuspi 0:149a086d663b 114 buffer1 = atoi(Temp1);
dan_cuspi 0:149a086d663b 115 buffer2 = atoi(ID1);
dan_cuspi 0:149a086d663b 116 buffer3 = atoi(Tacto2);
dan_cuspi 0:149a086d663b 117 buffer4 = atoi(Temp2);
dan_cuspi 0:149a086d663b 118 buffer5 = atoi(ID2);
dan_cuspi 0:149a086d663b 119 Pc2.printf("%i,%i,%i,%i,%i,%i\n\r",buffer0,buffer1,buffer2,buffer3,buffer4,buffer5);
dan_cuspi 0:149a086d663b 120 wait(1);
dan_cuspi 0:149a086d663b 121 }
dan_cuspi 0:149a086d663b 122
dan_cuspi 0:149a086d663b 123
dan_cuspi 0:149a086d663b 124
dan_cuspi 0:149a086d663b 125
dan_cuspi 0:149a086d663b 126
dan_cuspi 0:149a086d663b 127
dan_cuspi 0:149a086d663b 128 if(buffer2 == 58 )
dan_cuspi 0:149a086d663b 129 {
dan_cuspi 0:149a086d663b 130
dan_cuspi 0:149a086d663b 131
dan_cuspi 0:149a086d663b 132 ////////////Contacto//////////////////
dan_cuspi 0:149a086d663b 133 if(buffer0 > 1 && buffer0<=65 ){
dan_cuspi 0:149a086d663b 134 x=(float( buffer0)-2)/63; //Calculo de PWM variable
dan_cuspi 0:149a086d663b 135
dan_cuspi 0:149a086d663b 136 voice1=1; //Habilitamos SlP
dan_cuspi 0:149a086d663b 137 voice2=1;
dan_cuspi 0:149a086d663b 138 voice3=1;
dan_cuspi 0:149a086d663b 139 pwm_buffer123.period_us (1); //Se configura el periodo a 1MHz
dan_cuspi 0:149a086d663b 140 pwm_buffer123 = x; // Mandamos el PWM
dan_cuspi 0:149a086d663b 141
dan_cuspi 0:149a086d663b 142 Pc2.printf("Buffer0 ente 1 y 65\n\r");
dan_cuspi 0:149a086d663b 143 wait(5);
dan_cuspi 0:149a086d663b 144 }
dan_cuspi 0:149a086d663b 145 ////////////Rugosidad///////////////////
dan_cuspi 0:149a086d663b 146 if( buffer0> 65 && buffer0<= 126 ){
dan_cuspi 0:149a086d663b 147 x=((float(( buffer0)-66)/60)*10000)+2000; //Calculo de frecuencia de periodo
dan_cuspi 0:149a086d663b 148 voice1=1; //Habilitamos SlP
dan_cuspi 0:149a086d663b 149 voice2=1;
dan_cuspi 0:149a086d663b 150 voice3=1;
dan_cuspi 0:149a086d663b 151 pwm_buffer123.period_us (x);
dan_cuspi 0:149a086d663b 152 pwm_buffer123 = j; //Configuracion de PWM Fijo
dan_cuspi 0:149a086d663b 153
dan_cuspi 0:149a086d663b 154 Pc2.printf("Buffer0 ente 65 y 126\n\r");
dan_cuspi 0:149a086d663b 155 wait(5);
dan_cuspi 0:149a086d663b 156 }
dan_cuspi 0:149a086d663b 157 ////////////Vibracion//////////////////
dan_cuspi 0:149a086d663b 158 if( buffer0>126 && buffer0<=255){
dan_cuspi 0:149a086d663b 159 x=(((float( buffer0)-127)/128)*75000)+10000; //Calculo de frecuencia de periodo
dan_cuspi 0:149a086d663b 160 voice1=1; //Habilitamos SlP
dan_cuspi 0:149a086d663b 161 voice2=1;
dan_cuspi 0:149a086d663b 162 voice3=1;
dan_cuspi 0:149a086d663b 163 pwm_buffer123.period_us (x);
dan_cuspi 0:149a086d663b 164 pwm_buffer123 = j; //Configuracion de PWM Fijo
dan_cuspi 0:149a086d663b 165
dan_cuspi 0:149a086d663b 166 Pc2.printf("Buffer0 ente 126 y 255\n\r");
dan_cuspi 0:149a086d663b 167 wait(5);
dan_cuspi 0:149a086d663b 168 }
dan_cuspi 0:149a086d663b 169
dan_cuspi 0:149a086d663b 170
dan_cuspi 0:149a086d663b 171 ////////////Temperatura///////////////
dan_cuspi 0:149a086d663b 172 if( buffer1 > 1 && buffer1 <= 63 ){
dan_cuspi 0:149a086d663b 173 frio=((float( buffer1)-2)/-61)+1; //Calculo de PWM
dan_cuspi 0:149a086d663b 174 cel1=1;
dan_cuspi 0:149a086d663b 175 cel2=1;
dan_cuspi 0:149a086d663b 176 cel3=1;
dan_cuspi 0:149a086d663b 177 cel_PH123=1; //Cambio de polaridad de driver
dan_cuspi 0:149a086d663b 178 pwm_cel123=frio;
dan_cuspi 0:149a086d663b 179
dan_cuspi 0:149a086d663b 180 Pc2.printf("Buffer1 ente 1 y 63\n\r");
dan_cuspi 0:149a086d663b 181 wait(5);
dan_cuspi 0:149a086d663b 182 }
dan_cuspi 0:149a086d663b 183 if( buffer1> 63 && buffer1<= 126 ){
dan_cuspi 0:149a086d663b 184 caliente=(float( buffer1)-64)/124; //Calculo de PWM
dan_cuspi 0:149a086d663b 185 cel1=1;
dan_cuspi 0:149a086d663b 186 cel2=1;
dan_cuspi 0:149a086d663b 187 cel3=1;
dan_cuspi 0:149a086d663b 188 cel_PH123=0; //Cambio de polaridad de driver
dan_cuspi 0:149a086d663b 189 pwm_cel123=caliente;
dan_cuspi 0:149a086d663b 190
dan_cuspi 0:149a086d663b 191 Pc2.printf("Buffer1 ente 63 y 126\n\r");
dan_cuspi 0:149a086d663b 192 wait(5);
dan_cuspi 0:149a086d663b 193 }
dan_cuspi 0:149a086d663b 194 ///////////////////////////////////// //Poner a 0 PWM
dan_cuspi 0:149a086d663b 195
dan_cuspi 0:149a086d663b 196 if( buffer1==0){
dan_cuspi 0:149a086d663b 197 cel1=0;
dan_cuspi 0:149a086d663b 198 cel2=0;
dan_cuspi 0:149a086d663b 199 cel3=0;
dan_cuspi 0:149a086d663b 200 pwm_cel123=0;
dan_cuspi 0:149a086d663b 201
dan_cuspi 0:149a086d663b 202 Pc2.printf("Buffer1 = 0\n\r");
dan_cuspi 0:149a086d663b 203 wait(5);
dan_cuspi 0:149a086d663b 204 }
dan_cuspi 0:149a086d663b 205 if( buffer0==0){
dan_cuspi 0:149a086d663b 206 voice1=0; //Habilitamos SlP
dan_cuspi 0:149a086d663b 207 voice2=0;
dan_cuspi 0:149a086d663b 208 voice3=0;
dan_cuspi 0:149a086d663b 209 pwm_buffer123=0;
dan_cuspi 0:149a086d663b 210
dan_cuspi 0:149a086d663b 211 Pc2.printf("Buffer0 = 0\n\r");
dan_cuspi 0:149a086d663b 212 wait(5);
dan_cuspi 0:149a086d663b 213 }
dan_cuspi 0:149a086d663b 214 }//end if
dan_cuspi 0:149a086d663b 215 ///////////////////////////////////////////////////////
dan_cuspi 0:149a086d663b 216
dan_cuspi 0:149a086d663b 217
dan_cuspi 0:149a086d663b 218 //////////////////////////MANO Derecha/// Falange A//////////////
dan_cuspi 0:149a086d663b 219 if(buffer5 == 74 ) {
dan_cuspi 0:149a086d663b 220
dan_cuspi 0:149a086d663b 221 voice4=1;
dan_cuspi 0:149a086d663b 222 voice5=1;
dan_cuspi 0:149a086d663b 223 voice6=1;
dan_cuspi 0:149a086d663b 224 cel4=1;
dan_cuspi 0:149a086d663b 225 cel5=1;
dan_cuspi 0:149a086d663b 226 cel6=1;
dan_cuspi 0:149a086d663b 227
dan_cuspi 0:149a086d663b 228 ////////////Contacto//////////////////
dan_cuspi 0:149a086d663b 229 if(buffer3> 1 && buffer3<=65 ) {
dan_cuspi 0:149a086d663b 230 x=(float( buffer3)-2)/63; //Calculo de PWM variable
dan_cuspi 0:149a086d663b 231
dan_cuspi 0:149a086d663b 232 voice4=1;
dan_cuspi 0:149a086d663b 233 voice5=1;
dan_cuspi 0:149a086d663b 234 voice6=1;
dan_cuspi 0:149a086d663b 235 pwm_buffer456.period_us (1); //Se configura el periodo a 1MHz
dan_cuspi 0:149a086d663b 236 pwm_buffer456 = x; // Mandamos el PWM
dan_cuspi 0:149a086d663b 237
dan_cuspi 0:149a086d663b 238 Pc2.printf("Buffer3 ente 1 y 65\n\r");
dan_cuspi 0:149a086d663b 239 wait(5);
dan_cuspi 0:149a086d663b 240 }
dan_cuspi 0:149a086d663b 241 ////////////Rugosidad///////////////////
dan_cuspi 0:149a086d663b 242 if( buffer3> 65 && buffer3<= 126 ) {
dan_cuspi 0:149a086d663b 243 x=((float(( buffer3)-66)/60)*10000)+2000; //Calculo de frecuencia de periodo
dan_cuspi 0:149a086d663b 244 voice4=1;
dan_cuspi 0:149a086d663b 245 voice5=1;
dan_cuspi 0:149a086d663b 246 voice6=1;
dan_cuspi 0:149a086d663b 247 pwm_buffer456.period_us (x);
dan_cuspi 0:149a086d663b 248 pwm_buffer456 = j; //Configuracion de PWM Fijo
dan_cuspi 0:149a086d663b 249
dan_cuspi 0:149a086d663b 250 Pc2.printf("Buffer3 ente 65 y 126\n\r");
dan_cuspi 0:149a086d663b 251 wait(5);
dan_cuspi 0:149a086d663b 252 }
dan_cuspi 0:149a086d663b 253 ////////////Vibracion//////////////////
dan_cuspi 0:149a086d663b 254 if( buffer3>126 && buffer3<=255) {
dan_cuspi 0:149a086d663b 255 x=(((float( buffer3)-127)/128)*75000)+10000; //Calculo de frecuencia de periodo
dan_cuspi 0:149a086d663b 256 voice4=1;
dan_cuspi 0:149a086d663b 257 voice5=1;
dan_cuspi 0:149a086d663b 258 voice6=1;
dan_cuspi 0:149a086d663b 259 pwm_buffer456.period_us (x);
dan_cuspi 0:149a086d663b 260 pwm_buffer456 = j; //Configuracion de PWM Fijo
dan_cuspi 0:149a086d663b 261
dan_cuspi 0:149a086d663b 262 Pc2.printf("Buffer3 ente 126 y 255\n\r");
dan_cuspi 0:149a086d663b 263 wait(5);
dan_cuspi 0:149a086d663b 264 }
dan_cuspi 0:149a086d663b 265 ////////////Temperatura///////////////
dan_cuspi 0:149a086d663b 266 if( buffer4> 1 && buffer4<= 63 ) {
dan_cuspi 0:149a086d663b 267 frio=((float( buffer4)-2)/-61)+1; //Calculo de PWM
dan_cuspi 0:149a086d663b 268 cel4=1;
dan_cuspi 0:149a086d663b 269 cel5=1;
dan_cuspi 0:149a086d663b 270 cel6=1;
dan_cuspi 0:149a086d663b 271 cel_PH456=1; //Cambio de polaridad de driver
dan_cuspi 0:149a086d663b 272 pwm_cel456=frio;
dan_cuspi 0:149a086d663b 273
dan_cuspi 0:149a086d663b 274 Pc2.printf("Buffer4 ente 1 y 63\n\r");
dan_cuspi 0:149a086d663b 275 wait(5);
dan_cuspi 0:149a086d663b 276 }
dan_cuspi 0:149a086d663b 277 if( buffer4> 63 && buffer4<= 126 ) {
dan_cuspi 0:149a086d663b 278 caliente=(float( buffer4)-64)/124; //Calculo de PWM
dan_cuspi 0:149a086d663b 279 cel4=1;
dan_cuspi 0:149a086d663b 280 cel5=1;
dan_cuspi 0:149a086d663b 281 cel6=1;
dan_cuspi 0:149a086d663b 282 cel_PH456=0; //Cambio de polaridad de driver
dan_cuspi 0:149a086d663b 283 pwm_cel456=caliente;
dan_cuspi 0:149a086d663b 284
dan_cuspi 0:149a086d663b 285 Pc2.printf("Buffer4 ente 63 y 126\n\r");
dan_cuspi 0:149a086d663b 286 wait(5);
dan_cuspi 0:149a086d663b 287 }
dan_cuspi 0:149a086d663b 288 ///////////////////////////////////// //Poner a 0 PWM
dan_cuspi 0:149a086d663b 289 if( buffer4==0) {
dan_cuspi 0:149a086d663b 290 cel4=0;
dan_cuspi 0:149a086d663b 291 cel5=0;
dan_cuspi 0:149a086d663b 292 cel6=0;
dan_cuspi 0:149a086d663b 293 pwm_cel456=0;
dan_cuspi 0:149a086d663b 294
dan_cuspi 0:149a086d663b 295 Pc2.printf("Buffer4 =0\n\r");
dan_cuspi 0:149a086d663b 296 wait(5);
dan_cuspi 0:149a086d663b 297 }
dan_cuspi 0:149a086d663b 298 if( buffer3==0) {
dan_cuspi 0:149a086d663b 299 voice4=0;
dan_cuspi 0:149a086d663b 300 voice5=0;
dan_cuspi 0:149a086d663b 301 voice6=0;
dan_cuspi 0:149a086d663b 302 pwm_buffer456=0;
dan_cuspi 0:149a086d663b 303
dan_cuspi 0:149a086d663b 304 Pc2.printf("Buffer3 = 0\n\r");
dan_cuspi 0:149a086d663b 305 wait(5);
dan_cuspi 0:149a086d663b 306 }
dan_cuspi 0:149a086d663b 307 }//end if
dan_cuspi 0:149a086d663b 308 ///////////////////////////////////////////////////////end Indice
dan_cuspi 0:149a086d663b 309
dan_cuspi 0:149a086d663b 310
dan_cuspi 0:149a086d663b 311
dan_cuspi 0:149a086d663b 312
dan_cuspi 0:149a086d663b 313
dan_cuspi 0:149a086d663b 314 }
dan_cuspi 0:149a086d663b 315 }