PID con android

Dependencies:   mbed

Revision:
1:e076d163a730
Parent:
0:d890d56973d1
--- 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