Daniel Uran
/
TAREA-PID_APLICACION
PID con android
Revision 1:e076d163a730, committed 2019-08-30
- Comitter:
- dsuranr15
- Date:
- Fri Aug 30 14:00:57 2019 +0000
- Parent:
- 0:d890d56973d1
- Commit message:
- Tarea PID android
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r d890d56973d1 -r e076d163a730 main.cpp --- a/main.cpp Wed Jul 24 19:02:20 2019 +0000 +++ b/main.cpp Fri Aug 30 14:00:57 2019 +0000 @@ -7,7 +7,7 @@ Serial GSM(PTE0,PTE1); //puertos del FRDM para el modem Serial pc(USBTX,USBRX); //puertos del PC -float pid,o,ai,ad,ap,med,err,pwm; +float pid,o,ai,ad,ap,med,err,pwm; // variables a utilizar float err_v; float KPNII,KDNII,kdnum=0; float kpnum=0,kinum=0,ok=0; @@ -16,7 +16,7 @@ float h=0; char P; -char buffer[21];// TAMAÑO DEL BUFER +char buffer[21];// TAMAÑO DEL BUFER para guardar datos char bufferB[5]; char KPC[4],KDC[4]; char KPCII[4],KDCII[4]; @@ -36,8 +36,8 @@ AnalogIn y(PTB3);//entrada analoga -//PwmOut u(PTE30); -PwmOut led(PTA13); + +PwmOut led(PTA13); // salida pwm @@ -91,26 +91,19 @@ ///////////////////////////////////////////////////////////////////////////////////////////////////////////// LedAzul=0; - /*pc.printf(" \n"); - pc.printf("CONTROLADOR PID (pc) \n"); - pc.printf("Ingrese el parametro a modificar KP , KD, KI, SP(SetPoint) ) \n" ); - pc.printf("Escriba M para mirar los parametros del PID \n"); - pc.printf("Escriba OK para Iniciar PID \n"); - pc.printf(" \n"); - /////////////////////////////////////////////////////////////////////////////////////////////////// - */ + pc: if (GSM.readable()) { readBuffer(buffer,25); - GSM.scanf("%f, %f, %f , %f , %f, %f, %f ", &spnum, &kpnum, &kdnum,&kinum,&AP,&pwm,&h); - //GSM.scanf("%f ", &spnum); - // pc.printf("buffer= %C %c\n\r ",buffer);//imprime el cero y el uno + GSM.scanf("%f, %f, %f , %f , %f, %f, %f ", &spnum, &kpnum, &kdnum,&kinum,&AP,&pwm,&h); // se toman los valores y se guardan + + pc.printf("buffer= %s ",buffer);//imprime el cero y el uno - // pc.printf("buffer= %d , %d , %d ",buffer[0]+buffer[1]+buffer[2]);//imprime el cero y el uno - + + // se imprimen los valores digitados pc.printf("\n SP = %f \n", spnum); pc.printf("\n KP = %f \n", kpnum); pc.printf("\n KD = %f \n", kdnum); @@ -118,13 +111,12 @@ pc.printf("\n AP = %f \n", AP); pc.printf("\n pwm = %f \n", pwm); pc.printf("\n h = %f \n", h); - //cleanBuffer(buffer,15); + - pc.printf("ESTOY ACA"); - //if(ok==1){ + lop1: - //cleanBuffer(buffer,15); + // leds de control LedAzul=1; wait(1); LedAzul=0; @@ -151,7 +143,7 @@ } - + // se imprimen los errores. pc.printf("ERROR= %0.01f ",err); pc.printf(" "); @@ -171,12 +163,12 @@ o = pid/3.3; - if(AP==1) { + if(AP==1) { // la aplicacion envia AP y nos permite trabajar de manera analoga o digital AnalogOut u(PTE30); u.write(o); pc.printf("analogo"); - } else if(AP==2) { + } else if(AP==2) { PwmOut u1(PTE20); u1.write(pwm); pc.printf("digital"); @@ -202,22 +194,19 @@ if (GSM.readable()) { readBuffer(buffer,25); - if (strncmp(buffer, "F", 1) == 0) { + if (strncmp(buffer, "F", 1) == 0) { // si se manda una F desde la aplicacion se reinicia el programa ok=0; goto LL; - //goto pc; - //cleanBufferB(bufferB,5); - //} else if(strncmp(buffer, "P", 1) == 0) { - } else if(h==1) { - // pc.printf("%s buffer", buffer); - //GSM.scanf(" %f, %f , %f , %f, %f ,%f,", &spnum, &kpnum, &kdnum,&kinum,&AP,&pwm); + + } else if(h==1) { // la aplicacion envia una h para realizar la seleccion + pw: - if(AP==1) { + if(AP==1) { // se selecciona entre analogo y digital AnalogOut u(PTE30); u.write(o); pc.printf("analogo"); @@ -230,11 +219,10 @@ } - //int med2=med*100; float med2=med; float med3; - // med3 = y.read(); - med3=pwm; + + med3=pwm; // se realiza la medicion por pwm int p, q, r; if(med3<3.3) { //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4 cifras) GSM.putc(0); //si el numero es hasta 255 se le ponen dos ceros adelante a la secuencia de bits @@ -249,7 +237,7 @@ GSM.putc(r); //mas significativa primero, menos despues si no no funciona!!! y con la orden PUTC solo asi le envia binarios } - + // se imprime los datos pc.printf("MEDICION= %0.01f \n",med3); pc.printf(" "); pc.printf("pwm= %0.01f \n",pwm); @@ -259,7 +247,7 @@ if (GSM.readable()) { readBuffer(buffer,25); - if (strncmp(buffer, "F", 1) == 0) { + if (strncmp(buffer, "F", 1) == 0) { // si se envia un f para. ok=0; goto LL; @@ -288,14 +276,14 @@ // se repite el ciclo - // } // DEL IF OK + goto pc; } // del if DE LOS DATOS - //goto pc; + - // cleanBuffer(buffer,10); + } //WHILE