PID Sencillo - Primera Prueba
Dependencies: Debounced TextLCD1 mbed
main.cpp@2:12dac32e2a8b, 2013-11-14 (annotated)
- Committer:
- jmcallef
- Date:
- Thu Nov 14 07:07:48 2013 +0000
- Revision:
- 2:12dac32e2a8b
- Parent:
- 1:ce04971eceb4
3ra entrega a revizar
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jmcallef | 0:ab047fb2215f | 1 | #include "mbed.h" |
jmcallef | 0:ab047fb2215f | 2 | #include "DebouncedIn.h" |
jmcallef | 0:ab047fb2215f | 3 | #include "TextLCD.h" |
jmcallef | 0:ab047fb2215f | 4 | |
jmcallef | 0:ab047fb2215f | 5 | AnalogIn Vin(PTC2); |
jmcallef | 2:12dac32e2a8b | 6 | AnalogOut Vout(PTE30); |
jmcallef | 0:ab047fb2215f | 7 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 |
jmcallef | 0:ab047fb2215f | 8 | |
jmcallef | 0:ab047fb2215f | 9 | DigitalOut led1(LED1); |
jmcallef | 0:ab047fb2215f | 10 | DigitalOut led2(LED2); |
jmcallef | 0:ab047fb2215f | 11 | DigitalOut led3(LED3); |
jmcallef | 0:ab047fb2215f | 12 | DigitalOut led4(LED4); |
jmcallef | 0:ab047fb2215f | 13 | DebouncedIn button1(PTC12); // Aumento |
jmcallef | 0:ab047fb2215f | 14 | DebouncedIn button2(PTC13); // Disminución |
jmcallef | 0:ab047fb2215f | 15 | DebouncedIn button3(PTC16); // Cambio de variable |
jmcallef | 0:ab047fb2215f | 16 | DebouncedIn button4(PTC17); // Reset |
jmcallef | 0:ab047fb2215f | 17 | |
jmcallef | 0:ab047fb2215f | 18 | int C1=0x0E; // solo muestra el curzor. |
jmcallef | 0:ab047fb2215f | 19 | int C2=0x18; // desplaza izquierda. |
jmcallef | 0:ab047fb2215f | 20 | int C3=0x1A; // desplaza derecha. |
jmcallef | 0:ab047fb2215f | 21 | int C4=0x0C; // quito cursor bajo. |
jmcallef | 0:ab047fb2215f | 22 | |
jmcallef | 0:ab047fb2215f | 23 | int i; // Indice de la variable. |
jmcallef | 0:ab047fb2215f | 24 | int j; // Controla cambio de posición. |
jmcallef | 0:ab047fb2215f | 25 | int kp, ki, kd, sp, cont; |
jmcallef | 2:12dac32e2a8b | 26 | int Error, Medida, Co, pid, ap, ai, ad, err_v; |
jmcallef | 2:12dac32e2a8b | 27 | // float pidn, err, med, sal; |
jmcallef | 2:12dac32e2a8b | 28 | int pidn, err, med, sal; |
jmcallef | 0:ab047fb2215f | 29 | |
jmcallef | 0:ab047fb2215f | 30 | int main(){ |
jmcallef | 0:ab047fb2215f | 31 | lcd.writeCommand(C1); // Escribimos un comando segun el manual del modulo LCD |
jmcallef | 0:ab047fb2215f | 32 | lcd.cls(); // Borro toda la pantalla |
jmcallef | 0:ab047fb2215f | 33 | lcd.locate(0,0); // Localizo donde se escribirá el siguiente comando. |
jmcallef | 0:ab047fb2215f | 34 | lcd.printf("Sp %d",sp); // Escribe Sp (aparecen desde el punto (0,0) |
jmcallef | 0:ab047fb2215f | 35 | lcd.locate(8,0); // Localizo donde se escribirá el siguiente comando. |
jmcallef | 0:ab047fb2215f | 36 | lcd.printf("Kp %d",kp); // Escribe Kp (aparecen desde el punto (8,0) |
jmcallef | 0:ab047fb2215f | 37 | lcd.locate(0,1); |
jmcallef | 0:ab047fb2215f | 38 | lcd.printf("Ki %d",ki); |
jmcallef | 0:ab047fb2215f | 39 | lcd.locate(8,1); |
jmcallef | 0:ab047fb2215f | 40 | lcd.printf("Kd %d",kd); |
jmcallef | 0:ab047fb2215f | 41 | |
jmcallef | 0:ab047fb2215f | 42 | |
jmcallef | 0:ab047fb2215f | 43 | while(1){ |
jmcallef | 0:ab047fb2215f | 44 | led3 =1; |
jmcallef | 0:ab047fb2215f | 45 | if (button3.falling()){ |
jmcallef | 0:ab047fb2215f | 46 | led3 =!led3; // Prendo el LED color rojo cada vez que pulso el boton 3 ya que pasa a valer 0 (encendido). |
jmcallef | 0:ab047fb2215f | 47 | ++j; |
jmcallef | 0:ab047fb2215f | 48 | } // INCREMENTA POSICION DEL MENU CON BOTON 3 |
jmcallef | 0:ab047fb2215f | 49 | if (j==0){ |
jmcallef | 0:ab047fb2215f | 50 | lcd.locate(3,0); |
jmcallef | 0:ab047fb2215f | 51 | lcd.printf("%d",sp); |
jmcallef | 0:ab047fb2215f | 52 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 53 | |
jmcallef | 0:ab047fb2215f | 54 | led1 = 1; |
jmcallef | 0:ab047fb2215f | 55 | |
jmcallef | 0:ab047fb2215f | 56 | if(button1.falling()) { |
jmcallef | 0:ab047fb2215f | 57 | led1 =!led1; // Prendo el LED color azul cada vez que pulso el boton 1 ya que pasa a valer 0 (encendido). |
jmcallef | 0:ab047fb2215f | 58 | //++sp; // Incrementa valor al pulsar el botón --> Ahora no lo usamos acá ya que necesitamos incremental. |
jmcallef | 0:ab047fb2215f | 59 | |
jmcallef | 0:ab047fb2215f | 60 | |
jmcallef | 0:ab047fb2215f | 61 | // Ahora comienza el incremental. |
jmcallef | 0:ab047fb2215f | 62 | |
jmcallef | 0:ab047fb2215f | 63 | if (!button1) { |
jmcallef | 0:ab047fb2215f | 64 | cont=0; |
jmcallef | 0:ab047fb2215f | 65 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 66 | |
jmcallef | 0:ab047fb2215f | 67 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 68 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 69 | sp=sp+1; |
jmcallef | 0:ab047fb2215f | 70 | if (sp>1000){ // Ponemos un tope incremental en 1.000 |
jmcallef | 0:ab047fb2215f | 71 | sp=1000; |
jmcallef | 0:ab047fb2215f | 72 | } |
jmcallef | 0:ab047fb2215f | 73 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 74 | lcd.printf("Sp %d",sp); |
jmcallef | 0:ab047fb2215f | 75 | |
jmcallef | 0:ab047fb2215f | 76 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 77 | if(button1){ |
jmcallef | 0:ab047fb2215f | 78 | break; |
jmcallef | 0:ab047fb2215f | 79 | } |
jmcallef | 0:ab047fb2215f | 80 | while(cont>=20 and cont<=40){ |
jmcallef | 0:ab047fb2215f | 81 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 82 | sp=sp+10; |
jmcallef | 0:ab047fb2215f | 83 | if (sp>1000){ // Ponemos un tope incremental en 10.000 |
jmcallef | 0:ab047fb2215f | 84 | sp=1000; |
jmcallef | 0:ab047fb2215f | 85 | } |
jmcallef | 0:ab047fb2215f | 86 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 87 | lcd.printf("Sp %d",sp); |
jmcallef | 0:ab047fb2215f | 88 | |
jmcallef | 0:ab047fb2215f | 89 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 90 | if(button1){ |
jmcallef | 0:ab047fb2215f | 91 | break; |
jmcallef | 0:ab047fb2215f | 92 | } |
jmcallef | 0:ab047fb2215f | 93 | |
jmcallef | 0:ab047fb2215f | 94 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 95 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 96 | sp=sp+100; |
jmcallef | 0:ab047fb2215f | 97 | if (sp>1000){ // Ponemos un tope incremental en 10.000 |
jmcallef | 0:ab047fb2215f | 98 | sp=1000; |
jmcallef | 0:ab047fb2215f | 99 | } |
jmcallef | 0:ab047fb2215f | 100 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 101 | lcd.printf("Sp %d",sp); |
jmcallef | 0:ab047fb2215f | 102 | |
jmcallef | 0:ab047fb2215f | 103 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 104 | if(button1){ |
jmcallef | 0:ab047fb2215f | 105 | break; |
jmcallef | 0:ab047fb2215f | 106 | } |
jmcallef | 0:ab047fb2215f | 107 | } |
jmcallef | 0:ab047fb2215f | 108 | } |
jmcallef | 0:ab047fb2215f | 109 | } |
jmcallef | 0:ab047fb2215f | 110 | } |
jmcallef | 0:ab047fb2215f | 111 | |
jmcallef | 0:ab047fb2215f | 112 | // Aqui termina el incremental. |
jmcallef | 0:ab047fb2215f | 113 | } |
jmcallef | 0:ab047fb2215f | 114 | |
jmcallef | 0:ab047fb2215f | 115 | |
jmcallef | 0:ab047fb2215f | 116 | led2 =1; |
jmcallef | 0:ab047fb2215f | 117 | if (button2.falling()) { |
jmcallef | 0:ab047fb2215f | 118 | led2 =!led2; // Prendo el LED color rojo cada vez que pulso el boton 2 ya que pasa a valer 0 (encendido). |
jmcallef | 0:ab047fb2215f | 119 | |
jmcallef | 0:ab047fb2215f | 120 | //--sp; // Reduce el valor al pulsar el botón. |
jmcallef | 0:ab047fb2215f | 121 | } |
jmcallef | 0:ab047fb2215f | 122 | |
jmcallef | 0:ab047fb2215f | 123 | |
jmcallef | 0:ab047fb2215f | 124 | // Ahora comienza el decremental. |
jmcallef | 0:ab047fb2215f | 125 | |
jmcallef | 0:ab047fb2215f | 126 | if (!button2) { |
jmcallef | 0:ab047fb2215f | 127 | cont=0; |
jmcallef | 0:ab047fb2215f | 128 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 129 | |
jmcallef | 0:ab047fb2215f | 130 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 131 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 132 | sp=sp-1; |
jmcallef | 0:ab047fb2215f | 133 | |
jmcallef | 0:ab047fb2215f | 134 | if (sp<=0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 135 | sp=0; |
jmcallef | 0:ab047fb2215f | 136 | } |
jmcallef | 0:ab047fb2215f | 137 | lcd.locate(3,0); |
jmcallef | 0:ab047fb2215f | 138 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 139 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 140 | lcd.printf("Sp %d",sp); |
jmcallef | 0:ab047fb2215f | 141 | |
jmcallef | 0:ab047fb2215f | 142 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 143 | if(button2){ |
jmcallef | 0:ab047fb2215f | 144 | break; |
jmcallef | 0:ab047fb2215f | 145 | } |
jmcallef | 0:ab047fb2215f | 146 | |
jmcallef | 0:ab047fb2215f | 147 | while(cont>=20 and cont<=40){ |
jmcallef | 0:ab047fb2215f | 148 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 149 | sp=sp-10; |
jmcallef | 0:ab047fb2215f | 150 | if (sp<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 151 | sp=0; |
jmcallef | 0:ab047fb2215f | 152 | } |
jmcallef | 0:ab047fb2215f | 153 | |
jmcallef | 0:ab047fb2215f | 154 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 155 | lcd.printf("Sp %d ",sp); |
jmcallef | 0:ab047fb2215f | 156 | |
jmcallef | 0:ab047fb2215f | 157 | |
jmcallef | 0:ab047fb2215f | 158 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 159 | if(button2){ |
jmcallef | 0:ab047fb2215f | 160 | break; |
jmcallef | 0:ab047fb2215f | 161 | } |
jmcallef | 0:ab047fb2215f | 162 | |
jmcallef | 0:ab047fb2215f | 163 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 164 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 165 | sp=sp-100; |
jmcallef | 0:ab047fb2215f | 166 | |
jmcallef | 0:ab047fb2215f | 167 | if (sp<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 168 | sp=0; |
jmcallef | 0:ab047fb2215f | 169 | } |
jmcallef | 0:ab047fb2215f | 170 | |
jmcallef | 0:ab047fb2215f | 171 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 172 | lcd.printf("Sp %d ",sp); |
jmcallef | 0:ab047fb2215f | 173 | |
jmcallef | 0:ab047fb2215f | 174 | |
jmcallef | 0:ab047fb2215f | 175 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 176 | if(button2){ |
jmcallef | 0:ab047fb2215f | 177 | break; |
jmcallef | 0:ab047fb2215f | 178 | } |
jmcallef | 0:ab047fb2215f | 179 | } |
jmcallef | 0:ab047fb2215f | 180 | } |
jmcallef | 0:ab047fb2215f | 181 | } |
jmcallef | 0:ab047fb2215f | 182 | } |
jmcallef | 0:ab047fb2215f | 183 | |
jmcallef | 0:ab047fb2215f | 184 | // Aqui termina el decremental. |
jmcallef | 0:ab047fb2215f | 185 | |
jmcallef | 0:ab047fb2215f | 186 | |
jmcallef | 0:ab047fb2215f | 187 | } |
jmcallef | 0:ab047fb2215f | 188 | if (j==1){ |
jmcallef | 0:ab047fb2215f | 189 | lcd.locate(11,0); |
jmcallef | 0:ab047fb2215f | 190 | lcd.printf("%d",kp); |
jmcallef | 0:ab047fb2215f | 191 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 192 | led1 =1; |
jmcallef | 0:ab047fb2215f | 193 | if (button1.falling()) { |
jmcallef | 0:ab047fb2215f | 194 | led1 =!led1; |
jmcallef | 0:ab047fb2215f | 195 | // ++kp; |
jmcallef | 0:ab047fb2215f | 196 | } |
jmcallef | 0:ab047fb2215f | 197 | |
jmcallef | 0:ab047fb2215f | 198 | // Ahora comienza el incremental. |
jmcallef | 0:ab047fb2215f | 199 | |
jmcallef | 0:ab047fb2215f | 200 | if (!button1) { |
jmcallef | 0:ab047fb2215f | 201 | cont=0; |
jmcallef | 0:ab047fb2215f | 202 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 203 | |
jmcallef | 0:ab047fb2215f | 204 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 205 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 206 | kp=kp+1; |
jmcallef | 0:ab047fb2215f | 207 | if (kp>1000){ // Ponemos un tope incremental en 10.000 |
jmcallef | 0:ab047fb2215f | 208 | kp=1000; |
jmcallef | 0:ab047fb2215f | 209 | } |
jmcallef | 0:ab047fb2215f | 210 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 211 | lcd.printf("Kp %d",kp); |
jmcallef | 0:ab047fb2215f | 212 | |
jmcallef | 0:ab047fb2215f | 213 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 214 | if(button1){ |
jmcallef | 0:ab047fb2215f | 215 | break; |
jmcallef | 0:ab047fb2215f | 216 | } |
jmcallef | 0:ab047fb2215f | 217 | while(cont>=20){ |
jmcallef | 0:ab047fb2215f | 218 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 219 | kp=kp+10; |
jmcallef | 0:ab047fb2215f | 220 | if (kp>1000){ // Ponemos un tope incremental en 10.000 |
jmcallef | 0:ab047fb2215f | 221 | kp=1000; |
jmcallef | 0:ab047fb2215f | 222 | } |
jmcallef | 0:ab047fb2215f | 223 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 224 | lcd.printf("Kp %d",kp); |
jmcallef | 0:ab047fb2215f | 225 | |
jmcallef | 0:ab047fb2215f | 226 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 227 | if(button1){ |
jmcallef | 0:ab047fb2215f | 228 | break; |
jmcallef | 0:ab047fb2215f | 229 | } |
jmcallef | 0:ab047fb2215f | 230 | |
jmcallef | 0:ab047fb2215f | 231 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 232 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 233 | kp=kp+100; |
jmcallef | 0:ab047fb2215f | 234 | if (kp>1000){ // Ponemos un tope incremental en 10.000 |
jmcallef | 0:ab047fb2215f | 235 | kp=1000; |
jmcallef | 0:ab047fb2215f | 236 | } |
jmcallef | 0:ab047fb2215f | 237 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 238 | lcd.printf("Kp %d",kp); |
jmcallef | 0:ab047fb2215f | 239 | |
jmcallef | 0:ab047fb2215f | 240 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 241 | if(button1){ |
jmcallef | 0:ab047fb2215f | 242 | break; |
jmcallef | 0:ab047fb2215f | 243 | } |
jmcallef | 0:ab047fb2215f | 244 | } |
jmcallef | 0:ab047fb2215f | 245 | } |
jmcallef | 0:ab047fb2215f | 246 | } |
jmcallef | 0:ab047fb2215f | 247 | } |
jmcallef | 0:ab047fb2215f | 248 | |
jmcallef | 0:ab047fb2215f | 249 | // Aqui termina el incremental. |
jmcallef | 0:ab047fb2215f | 250 | } |
jmcallef | 0:ab047fb2215f | 251 | |
jmcallef | 0:ab047fb2215f | 252 | |
jmcallef | 0:ab047fb2215f | 253 | led2 =1; |
jmcallef | 0:ab047fb2215f | 254 | if (button2.falling()) { |
jmcallef | 0:ab047fb2215f | 255 | led2 =!led2; // Prendo el LED color rojo cada vez que pulso el boton 2 ya que pasa a valer 0 (encendido). |
jmcallef | 0:ab047fb2215f | 256 | |
jmcallef | 0:ab047fb2215f | 257 | //--sp; // Reduce el valor al pulsar el botón. |
jmcallef | 0:ab047fb2215f | 258 | } |
jmcallef | 0:ab047fb2215f | 259 | |
jmcallef | 0:ab047fb2215f | 260 | |
jmcallef | 0:ab047fb2215f | 261 | // Ahora comienza el decremental. |
jmcallef | 0:ab047fb2215f | 262 | |
jmcallef | 0:ab047fb2215f | 263 | if (!button2) { |
jmcallef | 0:ab047fb2215f | 264 | cont=0; |
jmcallef | 0:ab047fb2215f | 265 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 266 | |
jmcallef | 0:ab047fb2215f | 267 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 268 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 269 | |
jmcallef | 0:ab047fb2215f | 270 | kp=kp-1; |
jmcallef | 0:ab047fb2215f | 271 | |
jmcallef | 0:ab047fb2215f | 272 | if (kp<=0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 273 | kp=0; |
jmcallef | 0:ab047fb2215f | 274 | } |
jmcallef | 0:ab047fb2215f | 275 | |
jmcallef | 0:ab047fb2215f | 276 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 277 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 278 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 279 | lcd.printf("Kp %d",kp); |
jmcallef | 0:ab047fb2215f | 280 | |
jmcallef | 0:ab047fb2215f | 281 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 282 | if(button2){ |
jmcallef | 0:ab047fb2215f | 283 | break; |
jmcallef | 0:ab047fb2215f | 284 | } |
jmcallef | 0:ab047fb2215f | 285 | |
jmcallef | 0:ab047fb2215f | 286 | while(cont>=20){ |
jmcallef | 0:ab047fb2215f | 287 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 288 | kp=kp-10; |
jmcallef | 0:ab047fb2215f | 289 | if (kp<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 290 | kp=0; |
jmcallef | 0:ab047fb2215f | 291 | } |
jmcallef | 0:ab047fb2215f | 292 | |
jmcallef | 0:ab047fb2215f | 293 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 294 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 295 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 296 | lcd.printf("Kp %d ",kp); |
jmcallef | 0:ab047fb2215f | 297 | |
jmcallef | 0:ab047fb2215f | 298 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 299 | if(button2){ |
jmcallef | 0:ab047fb2215f | 300 | break; |
jmcallef | 0:ab047fb2215f | 301 | } |
jmcallef | 0:ab047fb2215f | 302 | |
jmcallef | 0:ab047fb2215f | 303 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 304 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 305 | kp=kp-100; |
jmcallef | 0:ab047fb2215f | 306 | |
jmcallef | 0:ab047fb2215f | 307 | if (kp<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 308 | kp=0; |
jmcallef | 0:ab047fb2215f | 309 | } |
jmcallef | 0:ab047fb2215f | 310 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 311 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 312 | lcd.locate(8,0); |
jmcallef | 0:ab047fb2215f | 313 | lcd.printf("Kp %d ",kp); |
jmcallef | 0:ab047fb2215f | 314 | |
jmcallef | 0:ab047fb2215f | 315 | |
jmcallef | 0:ab047fb2215f | 316 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 317 | if(button2){ |
jmcallef | 0:ab047fb2215f | 318 | break; |
jmcallef | 0:ab047fb2215f | 319 | } |
jmcallef | 0:ab047fb2215f | 320 | } |
jmcallef | 0:ab047fb2215f | 321 | } |
jmcallef | 0:ab047fb2215f | 322 | } |
jmcallef | 0:ab047fb2215f | 323 | } |
jmcallef | 0:ab047fb2215f | 324 | |
jmcallef | 0:ab047fb2215f | 325 | |
jmcallef | 0:ab047fb2215f | 326 | |
jmcallef | 0:ab047fb2215f | 327 | if (j==2){ |
jmcallef | 0:ab047fb2215f | 328 | lcd.locate(3,1); |
jmcallef | 0:ab047fb2215f | 329 | lcd.printf("%d",ki); |
jmcallef | 0:ab047fb2215f | 330 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 331 | led1 =1; |
jmcallef | 0:ab047fb2215f | 332 | if (button1.falling()){ |
jmcallef | 0:ab047fb2215f | 333 | led1 =!led1; |
jmcallef | 0:ab047fb2215f | 334 | |
jmcallef | 0:ab047fb2215f | 335 | //++sp; // Incrementa valor al pulsar el botón --> Ahora no lo usamos acá ya que necesitamos incremental. |
jmcallef | 0:ab047fb2215f | 336 | |
jmcallef | 0:ab047fb2215f | 337 | |
jmcallef | 0:ab047fb2215f | 338 | // Ahora comienza el incremental. |
jmcallef | 0:ab047fb2215f | 339 | |
jmcallef | 0:ab047fb2215f | 340 | if (!button1) { |
jmcallef | 0:ab047fb2215f | 341 | cont=0; |
jmcallef | 0:ab047fb2215f | 342 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 343 | |
jmcallef | 0:ab047fb2215f | 344 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 345 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 346 | ki=ki+1; |
jmcallef | 0:ab047fb2215f | 347 | if (ki>1000){ // Ponemos un tope incremental en 1.000 |
jmcallef | 0:ab047fb2215f | 348 | ki=1000; |
jmcallef | 0:ab047fb2215f | 349 | } |
jmcallef | 0:ab047fb2215f | 350 | lcd.locate(0,1); |
jmcallef | 0:ab047fb2215f | 351 | lcd.printf("Ki %d",ki); |
jmcallef | 0:ab047fb2215f | 352 | |
jmcallef | 0:ab047fb2215f | 353 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 354 | if(button1){ |
jmcallef | 0:ab047fb2215f | 355 | break; |
jmcallef | 0:ab047fb2215f | 356 | } |
jmcallef | 0:ab047fb2215f | 357 | while(cont>=20 and cont<=40){ |
jmcallef | 0:ab047fb2215f | 358 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 359 | ki=ki+10; |
jmcallef | 0:ab047fb2215f | 360 | if (ki>1000){ // Ponemos un tope incremental en 10.000 |
jmcallef | 0:ab047fb2215f | 361 | ki=1000; |
jmcallef | 0:ab047fb2215f | 362 | } |
jmcallef | 0:ab047fb2215f | 363 | lcd.locate(0,1); |
jmcallef | 0:ab047fb2215f | 364 | lcd.printf("Ki %d",ki); |
jmcallef | 0:ab047fb2215f | 365 | |
jmcallef | 0:ab047fb2215f | 366 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 367 | if(button1){ |
jmcallef | 0:ab047fb2215f | 368 | break; |
jmcallef | 0:ab047fb2215f | 369 | } |
jmcallef | 0:ab047fb2215f | 370 | |
jmcallef | 0:ab047fb2215f | 371 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 372 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 373 | ki=ki+100; |
jmcallef | 0:ab047fb2215f | 374 | if (ki>1000){ // Ponemos un tope incremental en 10.000 |
jmcallef | 0:ab047fb2215f | 375 | ki=1000; |
jmcallef | 0:ab047fb2215f | 376 | } |
jmcallef | 0:ab047fb2215f | 377 | lcd.locate(0,1); |
jmcallef | 0:ab047fb2215f | 378 | lcd.printf("Ki %d",ki); |
jmcallef | 0:ab047fb2215f | 379 | |
jmcallef | 0:ab047fb2215f | 380 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 381 | if(button1){ |
jmcallef | 0:ab047fb2215f | 382 | break; |
jmcallef | 0:ab047fb2215f | 383 | } |
jmcallef | 0:ab047fb2215f | 384 | } |
jmcallef | 0:ab047fb2215f | 385 | } |
jmcallef | 0:ab047fb2215f | 386 | } |
jmcallef | 0:ab047fb2215f | 387 | } |
jmcallef | 0:ab047fb2215f | 388 | } |
jmcallef | 0:ab047fb2215f | 389 | // Aqui termina el incremental. |
jmcallef | 0:ab047fb2215f | 390 | } |
jmcallef | 0:ab047fb2215f | 391 | |
jmcallef | 0:ab047fb2215f | 392 | |
jmcallef | 0:ab047fb2215f | 393 | led2 =1; |
jmcallef | 0:ab047fb2215f | 394 | if (button2.falling()) { |
jmcallef | 0:ab047fb2215f | 395 | led2 =!led2; // Prendo el LED color rojo cada vez que pulso el boton 2 ya que pasa a valer 0 (encendido). |
jmcallef | 0:ab047fb2215f | 396 | |
jmcallef | 0:ab047fb2215f | 397 | //--sp; // Reduce el valor al pulsar el botón. |
jmcallef | 0:ab047fb2215f | 398 | } |
jmcallef | 0:ab047fb2215f | 399 | |
jmcallef | 0:ab047fb2215f | 400 | |
jmcallef | 0:ab047fb2215f | 401 | // Ahora comienza el decremental. |
jmcallef | 0:ab047fb2215f | 402 | |
jmcallef | 0:ab047fb2215f | 403 | if (!button2) { |
jmcallef | 0:ab047fb2215f | 404 | cont=0; |
jmcallef | 0:ab047fb2215f | 405 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 406 | |
jmcallef | 0:ab047fb2215f | 407 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 408 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 409 | ki=ki-1; |
jmcallef | 0:ab047fb2215f | 410 | |
jmcallef | 0:ab047fb2215f | 411 | if (ki<=0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 412 | ki=0; |
jmcallef | 0:ab047fb2215f | 413 | } |
jmcallef | 0:ab047fb2215f | 414 | lcd.locate(3,1); |
jmcallef | 0:ab047fb2215f | 415 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 416 | lcd.locate(0,1); |
jmcallef | 0:ab047fb2215f | 417 | lcd.printf("Ki %d",ki); |
jmcallef | 0:ab047fb2215f | 418 | |
jmcallef | 0:ab047fb2215f | 419 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 420 | if(button2){ |
jmcallef | 0:ab047fb2215f | 421 | break; |
jmcallef | 0:ab047fb2215f | 422 | } |
jmcallef | 0:ab047fb2215f | 423 | |
jmcallef | 0:ab047fb2215f | 424 | while(cont>=20 and cont<=40){ |
jmcallef | 0:ab047fb2215f | 425 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 426 | ki=ki-10; |
jmcallef | 0:ab047fb2215f | 427 | if (sp<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 428 | ki=0; |
jmcallef | 0:ab047fb2215f | 429 | } |
jmcallef | 0:ab047fb2215f | 430 | |
jmcallef | 0:ab047fb2215f | 431 | lcd.locate(3,1); |
jmcallef | 0:ab047fb2215f | 432 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 433 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 434 | lcd.printf("Ki %d ",ki); |
jmcallef | 0:ab047fb2215f | 435 | |
jmcallef | 0:ab047fb2215f | 436 | |
jmcallef | 0:ab047fb2215f | 437 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 438 | if(button2){ |
jmcallef | 0:ab047fb2215f | 439 | break; |
jmcallef | 0:ab047fb2215f | 440 | } |
jmcallef | 0:ab047fb2215f | 441 | |
jmcallef | 0:ab047fb2215f | 442 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 443 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 444 | ki=ki-100; |
jmcallef | 0:ab047fb2215f | 445 | |
jmcallef | 0:ab047fb2215f | 446 | if (ki<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 447 | ki=0; |
jmcallef | 0:ab047fb2215f | 448 | } |
jmcallef | 0:ab047fb2215f | 449 | |
jmcallef | 0:ab047fb2215f | 450 | lcd.locate(3,1); |
jmcallef | 0:ab047fb2215f | 451 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 452 | lcd.locate(0,0); |
jmcallef | 0:ab047fb2215f | 453 | lcd.printf("Ki %d ",ki); |
jmcallef | 0:ab047fb2215f | 454 | |
jmcallef | 0:ab047fb2215f | 455 | |
jmcallef | 0:ab047fb2215f | 456 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 457 | if(button2){ |
jmcallef | 0:ab047fb2215f | 458 | break; |
jmcallef | 0:ab047fb2215f | 459 | } |
jmcallef | 0:ab047fb2215f | 460 | } |
jmcallef | 0:ab047fb2215f | 461 | } |
jmcallef | 0:ab047fb2215f | 462 | } |
jmcallef | 0:ab047fb2215f | 463 | } |
jmcallef | 0:ab047fb2215f | 464 | |
jmcallef | 0:ab047fb2215f | 465 | // Aqui termina el decremental. |
jmcallef | 0:ab047fb2215f | 466 | |
jmcallef | 0:ab047fb2215f | 467 | if (j==3){ |
jmcallef | 0:ab047fb2215f | 468 | lcd.locate(11,1); |
jmcallef | 0:ab047fb2215f | 469 | lcd.printf("%d",kd); |
jmcallef | 0:ab047fb2215f | 470 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 471 | led1 =1; |
jmcallef | 0:ab047fb2215f | 472 | if (button1.falling()){ |
jmcallef | 0:ab047fb2215f | 473 | led1 =!led1; |
jmcallef | 0:ab047fb2215f | 474 | |
jmcallef | 0:ab047fb2215f | 475 | //++sp; // Incrementa valor al pulsar el botón --> Ahora no lo usamos acá ya que necesitamos incremental. |
jmcallef | 0:ab047fb2215f | 476 | |
jmcallef | 0:ab047fb2215f | 477 | |
jmcallef | 0:ab047fb2215f | 478 | // Ahora comienza el incremental. |
jmcallef | 0:ab047fb2215f | 479 | |
jmcallef | 0:ab047fb2215f | 480 | if (!button1) { |
jmcallef | 0:ab047fb2215f | 481 | cont=0; |
jmcallef | 0:ab047fb2215f | 482 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 483 | |
jmcallef | 0:ab047fb2215f | 484 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 485 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 486 | kd=kd+1; |
jmcallef | 0:ab047fb2215f | 487 | |
jmcallef | 0:ab047fb2215f | 488 | if (kd>1000){ // Ponemos un tope incremental en 1.000 |
jmcallef | 0:ab047fb2215f | 489 | kd=1000; |
jmcallef | 0:ab047fb2215f | 490 | } |
jmcallef | 0:ab047fb2215f | 491 | lcd.locate(8,1); |
jmcallef | 0:ab047fb2215f | 492 | lcd.printf("Kd %d",kd); |
jmcallef | 0:ab047fb2215f | 493 | |
jmcallef | 0:ab047fb2215f | 494 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 495 | if(button1){ |
jmcallef | 0:ab047fb2215f | 496 | break; |
jmcallef | 0:ab047fb2215f | 497 | } |
jmcallef | 0:ab047fb2215f | 498 | while(cont>=20 and cont<=40){ |
jmcallef | 0:ab047fb2215f | 499 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 500 | kd=kd+10; |
jmcallef | 0:ab047fb2215f | 501 | if (kd>1000){ // Ponemos un tope incremental en 100 |
jmcallef | 0:ab047fb2215f | 502 | kd=1000; |
jmcallef | 0:ab047fb2215f | 503 | } |
jmcallef | 0:ab047fb2215f | 504 | lcd.locate(8,1); |
jmcallef | 0:ab047fb2215f | 505 | lcd.printf("Kd %d",kd); |
jmcallef | 0:ab047fb2215f | 506 | |
jmcallef | 0:ab047fb2215f | 507 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 508 | if(button1){ |
jmcallef | 0:ab047fb2215f | 509 | break; |
jmcallef | 0:ab047fb2215f | 510 | } |
jmcallef | 0:ab047fb2215f | 511 | |
jmcallef | 0:ab047fb2215f | 512 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 513 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 514 | kd=kd+100; |
jmcallef | 0:ab047fb2215f | 515 | if (kd>1000){ // Ponemos un tope incremental en 1000 |
jmcallef | 0:ab047fb2215f | 516 | kd=1000; |
jmcallef | 0:ab047fb2215f | 517 | } |
jmcallef | 0:ab047fb2215f | 518 | lcd.locate(8,1); |
jmcallef | 0:ab047fb2215f | 519 | lcd.printf("Kd %d",kd); |
jmcallef | 0:ab047fb2215f | 520 | |
jmcallef | 0:ab047fb2215f | 521 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 522 | if(button1){ |
jmcallef | 0:ab047fb2215f | 523 | break; |
jmcallef | 0:ab047fb2215f | 524 | } |
jmcallef | 0:ab047fb2215f | 525 | } |
jmcallef | 0:ab047fb2215f | 526 | } |
jmcallef | 0:ab047fb2215f | 527 | } |
jmcallef | 0:ab047fb2215f | 528 | } |
jmcallef | 0:ab047fb2215f | 529 | } |
jmcallef | 0:ab047fb2215f | 530 | // Aqui termina el incremental. |
jmcallef | 0:ab047fb2215f | 531 | } |
jmcallef | 0:ab047fb2215f | 532 | |
jmcallef | 0:ab047fb2215f | 533 | |
jmcallef | 0:ab047fb2215f | 534 | led2 =1; |
jmcallef | 0:ab047fb2215f | 535 | if (button2.falling()) { |
jmcallef | 0:ab047fb2215f | 536 | led2 =!led2; // Prendo el LED color rojo cada vez que pulso el boton 2 ya que pasa a valer 0 (encendido). |
jmcallef | 0:ab047fb2215f | 537 | |
jmcallef | 0:ab047fb2215f | 538 | //--sp; // Reduce el valor al pulsar el botón. |
jmcallef | 0:ab047fb2215f | 539 | } |
jmcallef | 0:ab047fb2215f | 540 | |
jmcallef | 0:ab047fb2215f | 541 | |
jmcallef | 0:ab047fb2215f | 542 | // Ahora comienza el decremental. |
jmcallef | 0:ab047fb2215f | 543 | |
jmcallef | 0:ab047fb2215f | 544 | if (!button2) { |
jmcallef | 0:ab047fb2215f | 545 | cont=0; |
jmcallef | 0:ab047fb2215f | 546 | wait(0.2); |
jmcallef | 0:ab047fb2215f | 547 | |
jmcallef | 0:ab047fb2215f | 548 | while(cont<20){ |
jmcallef | 0:ab047fb2215f | 549 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 550 | kd=kd-1; |
jmcallef | 0:ab047fb2215f | 551 | |
jmcallef | 0:ab047fb2215f | 552 | if (kd<=0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 553 | kd=0; |
jmcallef | 0:ab047fb2215f | 554 | } |
jmcallef | 0:ab047fb2215f | 555 | lcd.locate(11,1); |
jmcallef | 0:ab047fb2215f | 556 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 557 | lcd.locate(8,1); |
jmcallef | 0:ab047fb2215f | 558 | lcd.printf("Kd %d",kd); |
jmcallef | 0:ab047fb2215f | 559 | |
jmcallef | 0:ab047fb2215f | 560 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 561 | if(button2){ |
jmcallef | 0:ab047fb2215f | 562 | break; |
jmcallef | 0:ab047fb2215f | 563 | } |
jmcallef | 0:ab047fb2215f | 564 | |
jmcallef | 0:ab047fb2215f | 565 | while(cont>=20 and cont<=40){ |
jmcallef | 0:ab047fb2215f | 566 | cont=cont+1; |
jmcallef | 0:ab047fb2215f | 567 | kd=kd-10; |
jmcallef | 0:ab047fb2215f | 568 | if (kd<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 569 | kd=0; |
jmcallef | 0:ab047fb2215f | 570 | } |
jmcallef | 0:ab047fb2215f | 571 | |
jmcallef | 0:ab047fb2215f | 572 | lcd.locate(11,1); |
jmcallef | 0:ab047fb2215f | 573 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 574 | lcd.locate(8,1); |
jmcallef | 0:ab047fb2215f | 575 | lcd.printf("Kd %d ",kd); |
jmcallef | 0:ab047fb2215f | 576 | |
jmcallef | 0:ab047fb2215f | 577 | |
jmcallef | 0:ab047fb2215f | 578 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 579 | if(button2){ |
jmcallef | 0:ab047fb2215f | 580 | break; |
jmcallef | 0:ab047fb2215f | 581 | } |
jmcallef | 0:ab047fb2215f | 582 | |
jmcallef | 0:ab047fb2215f | 583 | while(cont>40){ |
jmcallef | 0:ab047fb2215f | 584 | cont = cont + 1; |
jmcallef | 0:ab047fb2215f | 585 | kd=kd-100; |
jmcallef | 0:ab047fb2215f | 586 | |
jmcallef | 0:ab047fb2215f | 587 | if (kd<0){ // No permitimos valores negativos, definimos valor mínimo en 0. |
jmcallef | 0:ab047fb2215f | 588 | kd=0; |
jmcallef | 0:ab047fb2215f | 589 | } |
jmcallef | 0:ab047fb2215f | 590 | |
jmcallef | 0:ab047fb2215f | 591 | lcd.locate(11,1); |
jmcallef | 0:ab047fb2215f | 592 | lcd.printf(" "); |
jmcallef | 0:ab047fb2215f | 593 | lcd.locate(8,1); |
jmcallef | 0:ab047fb2215f | 594 | lcd.printf("Kd %d ",kd); |
jmcallef | 0:ab047fb2215f | 595 | |
jmcallef | 0:ab047fb2215f | 596 | |
jmcallef | 0:ab047fb2215f | 597 | wait(0.3); |
jmcallef | 0:ab047fb2215f | 598 | if(button2){ |
jmcallef | 0:ab047fb2215f | 599 | break; |
jmcallef | 2:12dac32e2a8b | 600 | } |
jmcallef | 2:12dac32e2a8b | 601 | |
jmcallef | 0:ab047fb2215f | 602 | } |
jmcallef | 0:ab047fb2215f | 603 | } |
jmcallef | 0:ab047fb2215f | 604 | } |
jmcallef | 0:ab047fb2215f | 605 | } |
jmcallef | 0:ab047fb2215f | 606 | |
jmcallef | 0:ab047fb2215f | 607 | // Aqui termina el decremental. |
jmcallef | 0:ab047fb2215f | 608 | |
jmcallef | 0:ab047fb2215f | 609 | if (button4.falling()){ |
jmcallef | 0:ab047fb2215f | 610 | break; //sale del bucle si pisan suiche4 |
jmcallef | 0:ab047fb2215f | 611 | } |
jmcallef | 0:ab047fb2215f | 612 | } |
jmcallef | 0:ab047fb2215f | 613 | |
jmcallef | 0:ab047fb2215f | 614 | //********************************************************************************** |
jmcallef | 0:ab047fb2215f | 615 | //******************************************************************************************************* |
jmcallef | 0:ab047fb2215f | 616 | |
jmcallef | 0:ab047fb2215f | 617 | |
jmcallef | 0:ab047fb2215f | 618 | |
jmcallef | 2:12dac32e2a8b | 619 | lcd.writeCommand(C4); // Comando para quitar cursor bajo (segun el manual del modulo LCD). |
jmcallef | 2:12dac32e2a8b | 620 | lcd.cls(); // Borra la pantalla |
jmcallef | 0:ab047fb2215f | 621 | lcd.printf(" GUARDADOS!"); |
jmcallef | 2:12dac32e2a8b | 622 | wait(1); |
jmcallef | 0:ab047fb2215f | 623 | lcd.cls(); |
jmcallef | 0:ab047fb2215f | 624 | lcd.printf(" INICIA EL PID"); |
jmcallef | 2:12dac32e2a8b | 625 | wait(1); |
jmcallef | 2:12dac32e2a8b | 626 | |
jmcallef | 2:12dac32e2a8b | 627 | // Se imprimen los parches del control. |
jmcallef | 2:12dac32e2a8b | 628 | |
jmcallef | 0:ab047fb2215f | 629 | lcd.cls(); |
jmcallef | 2:12dac32e2a8b | 630 | lcd.printf("Err %d",err); |
jmcallef | 0:ab047fb2215f | 631 | lcd.locate(8,0); |
jmcallef | 2:12dac32e2a8b | 632 | lcd.printf("Med %d",med); |
jmcallef | 0:ab047fb2215f | 633 | lcd.locate(0,1); |
jmcallef | 2:12dac32e2a8b | 634 | lcd.printf("Sp %d",sp); |
jmcallef | 0:ab047fb2215f | 635 | lcd.locate(8,1); |
jmcallef | 2:12dac32e2a8b | 636 | lcd.printf("Co %d",pid); |
jmcallef | 2:12dac32e2a8b | 637 | wait(1); |
jmcallef | 2:12dac32e2a8b | 638 | |
jmcallef | 2:12dac32e2a8b | 639 | |
jmcallef | 0:ab047fb2215f | 640 | // CICLO PRINCIPAL CONTROLADOR PID |
jmcallef | 0:ab047fb2215f | 641 | |
jmcallef | 0:ab047fb2215f | 642 | while(1) { |
jmcallef | 2:12dac32e2a8b | 643 | med=Vout*100; // Se le asigna al puerto Análogo la variable med. |
jmcallef | 0:ab047fb2215f | 644 | err = (sp-med); |
jmcallef | 2:12dac32e2a8b | 645 | |
jmcallef | 2:12dac32e2a8b | 646 | // Verificamos que la accion integral no sea muy grande. |
jmcallef | 2:12dac32e2a8b | 647 | |
jmcallef | 2:12dac32e2a8b | 648 | if (ai < 1000){ |
jmcallef | 2:12dac32e2a8b | 649 | ai =(ki*err)+ai; //Cálculo de la integral del error; |
jmcallef | 2:12dac32e2a8b | 650 | } |
jmcallef | 2:12dac32e2a8b | 651 | |
jmcallef | 2:12dac32e2a8b | 652 | if (ap < 1000){ |
jmcallef | 2:12dac32e2a8b | 653 | ap = kp*err; //Cálculo de la integral del error; |
jmcallef | 2:12dac32e2a8b | 654 | } |
jmcallef | 2:12dac32e2a8b | 655 | |
jmcallef | 2:12dac32e2a8b | 656 | if (ad < 1000){ |
jmcallef | 2:12dac32e2a8b | 657 | ad = kd*(err-err_v); //Cálculo de la integral del error; |
jmcallef | 2:12dac32e2a8b | 658 | } |
jmcallef | 2:12dac32e2a8b | 659 | |
jmcallef | 2:12dac32e2a8b | 660 | pid = (ap+ai+ad); // Calculo del PID |
jmcallef | 2:12dac32e2a8b | 661 | |
jmcallef | 2:12dac32e2a8b | 662 | if(pid<0){ |
jmcallef | 2:12dac32e2a8b | 663 | pid=0; |
jmcallef | 2:12dac32e2a8b | 664 | } |
jmcallef | 2:12dac32e2a8b | 665 | |
jmcallef | 2:12dac32e2a8b | 666 | if (pid > 1000){ |
jmcallef | 0:ab047fb2215f | 667 | pid=1000; |
jmcallef | 2:12dac32e2a8b | 668 | } |
jmcallef | 2:12dac32e2a8b | 669 | |
jmcallef | 2:12dac32e2a8b | 670 | //Vout=pid/999; |
jmcallef | 0:ab047fb2215f | 671 | |
jmcallef | 0:ab047fb2215f | 672 | |
jmcallef | 2:12dac32e2a8b | 673 | lcd.locate(4,0); |
jmcallef | 2:12dac32e2a8b | 674 | lcd.printf("%d",err); |
jmcallef | 2:12dac32e2a8b | 675 | lcd.locate(12,0); |
jmcallef | 2:12dac32e2a8b | 676 | lcd.printf("%d",med); |
jmcallef | 2:12dac32e2a8b | 677 | lcd.locate(3,1); |
jmcallef | 2:12dac32e2a8b | 678 | lcd.printf("%d",sp); |
jmcallef | 2:12dac32e2a8b | 679 | lcd.locate(12,1); |
jmcallef | 2:12dac32e2a8b | 680 | lcd.printf("%d",pid); |
jmcallef | 2:12dac32e2a8b | 681 | wait(0.2); |
jmcallef | 1:ce04971eceb4 | 682 | |
jmcallef | 0:ab047fb2215f | 683 | // se actualizan las variables ******************************************* |
jmcallef | 2:12dac32e2a8b | 684 | |
jmcallef | 0:ab047fb2215f | 685 | // se verifica que pid sea positivo ************************************** |
jmcallef | 2:12dac32e2a8b | 686 | if (pid < 0){ |
jmcallef | 2:12dac32e2a8b | 687 | pid=0; |
jmcallef | 2:12dac32e2a8b | 688 | } |
jmcallef | 0:ab047fb2215f | 689 | |
jmcallef | 0:ab047fb2215f | 690 | |
jmcallef | 0:ab047fb2215f | 691 | // se envia el valor pid a puerto analogico de salida (D/A) ************** |
jmcallef | 2:12dac32e2a8b | 692 | |
jmcallef | 2:12dac32e2a8b | 693 | Vout=pid; |
jmcallef | 2:12dac32e2a8b | 694 | err_v = err; |
jmcallef | 2:12dac32e2a8b | 695 | |
jmcallef | 0:ab047fb2215f | 696 | } |
jmcallef | 2:12dac32e2a8b | 697 | } |