Configuración Encoder y Display. Movimiento entre variables PID y visualización en pantalla LCD Juan Salvador Payares Ernesto Guevara

Dependencies:   QEI TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "QEI.h"
00003 #include "TextLCD.h"
00004 
00005 //AnalogIn Vin(PTC2);
00006 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
00007 QEI encoder (PTD6, PTD7, PTA17, 624);
00008 AnalogIn Vin(PTB0);//Voltaje de alimentación
00009 DigitalOut sound(PTC5); //Salida de Audio Digital
00010 AnalogOut Vout(PTE30); //Marcar la salida analógica
00011 DigitalIn button3(PTA17);
00012 int i;
00013 //codigos movimiento del curzor
00014 
00015  //int C1=0x0E; // solo muestra el cursor
00016 int C2=0x18; // desplaza izquierda
00017 int C3=0x1A; // desplaza derecha
00018 int C4=0x0C; // quito cursor bajo
00019 int C1=0x0F;
00020 int err, med, yr, pid, ap, ai, ad, err_v, cambio=0, diferencia=0;
00021 int spnum=0,kinum=0,kpnum=0,kdnum=0,pos=1;
00022 int flagt=0;
00023 Timer t;
00024 
00025 int main()
00026 {
00027     lcd.cls(); // Borrar Pantalla
00028     lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
00029 
00030     lcd.locate(8,0);
00031     lcd.printf("Kp=%d",kpnum);
00032     lcd.locate(0,1);
00033     lcd.printf("Ki=%d",kinum);
00034     lcd.locate(8,1);
00035     lcd.printf("Kd=%d",kdnum);
00036     lcd.locate(0,0);
00037     lcd.printf("Sp=%d",spnum);
00038 
00039     while(1)
00040     {
00041         //lcd.locate(8,0);
00042         //lcd.printf("Kp=%d",encoder.getPulses());
00043         //wait(.5);
00044 
00045         diferencia=encoder.getPulses()-cambio;
00046         cambio=encoder.getPulses();
00047 
00048         if (diferencia==0)
00049         {
00050             //nada
00051         }
00052         else if(diferencia>0)
00053         {
00054             if(pos==1)
00055             {
00056                 if(spnum+diferencia>=999)
00057                 {
00058                     spnum=999;
00059                     lcd.locate(3,0);
00060                     lcd.printf("    ");
00061                     lcd.locate(3,0);
00062                     lcd.printf("%d", spnum);
00063                 }
00064                 else
00065                 {
00066                     spnum+=diferencia;
00067                     lcd.locate(3,0);
00068                     lcd.printf("%d", spnum);
00069                 }
00070             }
00071             else if(pos==2)
00072             {
00073                 if(kpnum+diferencia>=999)
00074                 {
00075                     kpnum=999;
00076                     lcd.locate(11,0);
00077                     lcd.printf("    ");
00078                     lcd.locate(11,0);
00079                     lcd.printf("%d", kpnum);
00080                 }
00081                 else
00082                 {
00083                     kpnum+=diferencia;
00084                     lcd.locate(11,0);
00085                     lcd.printf("%d", kpnum);
00086                 }
00087             }
00088             else if(pos==3)
00089             {
00090                 if(kinum+diferencia>=999)
00091                 {
00092                     kinum=999;
00093                     lcd.locate(3,1);
00094                     lcd.printf("    ");
00095                     lcd.locate(3,1);
00096                     lcd.printf("%d", kinum);
00097                 }
00098                 else
00099                 {
00100                     kinum+=diferencia;
00101                     lcd.locate(3,1);
00102                     lcd.printf("%d", kinum);
00103                 }
00104             }
00105             else if(pos==4)
00106             {
00107                 if(kdnum+diferencia>=999)
00108                 {
00109                     kdnum=999;
00110                     lcd.locate(11,1);
00111                     lcd.printf("    ");
00112                     lcd.locate(11,1);
00113                     lcd.printf("%d", kdnum);
00114                 }
00115                 else
00116                 {
00117                     kdnum+=diferencia;
00118                     lcd.locate(11,1);
00119                     lcd.printf("%d", kdnum);
00120                 }
00121             }
00122         }
00123         
00124         else if(diferencia<0)
00125         {
00126             if(pos==1)
00127             {
00128                 if(spnum+diferencia<0)
00129                 {
00130                     //No ocurre nada
00131                 }
00132                 else
00133                 {
00134                     spnum+=diferencia;
00135                     lcd.locate(3,0);
00136                     lcd.printf("    ");
00137                     lcd.locate(3,0);
00138                     lcd.printf("%d", spnum);
00139                 }
00140             }
00141             else if(pos==2)
00142             {
00143                 if(kpnum+diferencia<0)
00144                 {
00145                     //No ocurre nada
00146                 }
00147                 else
00148                 {
00149                     kpnum+=diferencia;
00150                     lcd.locate(11,0);
00151                     lcd.printf("    ");
00152                     lcd.locate(11,0);
00153                     lcd.printf("%d", kpnum);
00154                 }
00155             }
00156             else if(pos==3)
00157             {
00158                 if(kinum+diferencia<0)
00159                 {
00160                     //No ocurre nada
00161                 }
00162                 else
00163                 {
00164                     kinum+=diferencia;
00165                     lcd.locate(3,1);
00166                     lcd.printf("    ");
00167                     lcd.locate(3,1);
00168                     lcd.printf("%d", kinum);
00169                 }
00170             }
00171             else if(pos==4)
00172             {
00173                 if(kdnum+diferencia<0)
00174                 {
00175                     //No ocurre nada
00176                 }
00177                 else
00178                 {
00179                     kdnum+=diferencia;
00180                     lcd.locate(11,1);
00181                     lcd.printf("    ");
00182                     lcd.locate(11,1);
00183                     lcd.printf("%d", kdnum);
00184                 }
00185             }
00186         }
00187 
00188         if (!button3)
00189         { 
00190             {
00191             for(i=1; i<= 100; ++i){ //ONDA CUADRADA, OSCILACIONES A 10 KHZ.... A VER SI FUNCIONA
00192                 sound = 0;
00193                 wait(0.00015);  // Medio ciclo de dureza Arriba
00194                 sound=1;
00195                 wait(0.0005); // Medio ciclo Abajo
00196             }
00197             if(pos==4)
00198             {
00199                 pos=1;
00200                 lcd.locate(3,0);
00201                 lcd.printf("%d", spnum);
00202             }
00203             else if (pos==1)
00204             {
00205                 pos++;
00206                 lcd.locate(11,0);
00207                 lcd.printf("%d", kpnum);
00208             }
00209             else if(pos==2)
00210             {
00211                 pos++;
00212                 lcd.locate(3,1);
00213                 lcd.printf("%d", kinum);
00214             }
00215             else if(pos==3)
00216             {
00217                 pos++;
00218                 lcd.locate(11,1);
00219                 lcd.printf("%d", kdnum);
00220             }
00221             wait(0.25);
00222 
00223         }
00224    
00225     }
00226   }
00227 }