Configuración Encoder y Display. Movimiento entre variables PID y visualización en pantalla LCD Juan Salvador Payares Ernesto Guevara
Dependencies: QEI TextLCD mbed
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 }
Generated on Wed Jul 20 2022 14:55:20 by 1.7.2