ingrese los parámetros para el controlador PID, se pueden ingresar del 0 al 9999 pero para el debido funcionamiento del PID ingrese del 0 al 100 cada parametro

Dependencies:   DebounceIn Debounced TextLCD mbed

Committer:
caaruizze
Date:
Mon Nov 18 14:14:46 2013 +0000
Revision:
0:0275ebccd8fe
tareas 2-3 que contienen el aumento y disminuci?n r?pida de los par?metros de un para un PID  (en este se encuentra el  controlador PID y el ingreso de los par?metros)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caaruizze 0:0275ebccd8fe 1 #include "mbed.h"
caaruizze 0:0275ebccd8fe 2 #include "DebouncedIn.h"
caaruizze 0:0275ebccd8fe 3 #include "DebounceIn.h"
caaruizze 0:0275ebccd8fe 4 #include "TextLCD.h"
caaruizze 0:0275ebccd8fe 5 AnalogIn Vin(PTC2);
caaruizze 0:0275ebccd8fe 6 AnalogOut Vo(PTE30);
caaruizze 0:0275ebccd8fe 7 int C1=0x0e;
caaruizze 0:0275ebccd8fe 8
caaruizze 0:0275ebccd8fe 9 int i=0;
caaruizze 0:0275ebccd8fe 10 int k=0,u=0;
caaruizze 0:0275ebccd8fe 11
caaruizze 0:0275ebccd8fe 12 int j=0;
caaruizze 0:0275ebccd8fe 13 int l=0,g=0;
caaruizze 0:0275ebccd8fe 14
caaruizze 0:0275ebccd8fe 15 int m=0;
caaruizze 0:0275ebccd8fe 16 int n=0,q=0;
caaruizze 0:0275ebccd8fe 17 int o=0;
caaruizze 0:0275ebccd8fe 18 int p=0,h=0;
caaruizze 0:0275ebccd8fe 19
caaruizze 0:0275ebccd8fe 20 float kp, ki, kd, sp ,err, med, yr, pid, ap, ai, ad, err_v ,Sp;
caaruizze 0:0275ebccd8fe 21 int x=1;
caaruizze 0:0275ebccd8fe 22
caaruizze 0:0275ebccd8fe 23 int main()
caaruizze 0:0275ebccd8fe 24 {
caaruizze 0:0275ebccd8fe 25 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5) ;// declaración de los puertos del lcd
caaruizze 0:0275ebccd8fe 26 DebounceIn b1(PTC16); //aumento
caaruizze 0:0275ebccd8fe 27 DebounceIn b3(PTC12);// disminuye
caaruizze 0:0275ebccd8fe 28 DebouncedIn b2(PTC13);// ,cambio de posición
caaruizze 0:0275ebccd8fe 29 DebounceIn b4(PTC17);// Cabio de etiqueta
caaruizze 0:0275ebccd8fe 30 lcd.printf("TAREA2:Proc"); // IMPRIMIR
caaruizze 0:0275ebccd8fe 31 wait(1); // espera 1 segundo
caaruizze 0:0275ebccd8fe 32 lcd.cls(); // borra lcd
caaruizze 0:0275ebccd8fe 33 lcd.writeCommand(C1); // escribe el comando C1
caaruizze 0:0275ebccd8fe 34 // Localiza y escribe los titulos Sp,Kp,Ki,Kd en la patalla
caaruizze 0:0275ebccd8fe 35 lcd.locate(0,0);
caaruizze 0:0275ebccd8fe 36 lcd.printf("Sp:%d",i);
caaruizze 0:0275ebccd8fe 37 lcd.locate(8,0);
caaruizze 0:0275ebccd8fe 38 lcd.printf("Kp:%d",j);
caaruizze 0:0275ebccd8fe 39 lcd.locate(0,1);
caaruizze 0:0275ebccd8fe 40 lcd.printf("Ki:%d",m);
caaruizze 0:0275ebccd8fe 41 lcd.locate(8,1);
caaruizze 0:0275ebccd8fe 42 lcd.printf("Kd:%d",o);
caaruizze 0:0275ebccd8fe 43 // Ciclo infinito
caaruizze 0:0275ebccd8fe 44 while (1)
caaruizze 0:0275ebccd8fe 45 {
caaruizze 0:0275ebccd8fe 46 if(b2.falling())
caaruizze 0:0275ebccd8fe 47 {
caaruizze 0:0275ebccd8fe 48 x=x+1;
caaruizze 0:0275ebccd8fe 49 }
caaruizze 0:0275ebccd8fe 50 //condicionales para ubicación en pantalla
caaruizze 0:0275ebccd8fe 51 if(x==1)
caaruizze 0:0275ebccd8fe 52 {//a
caaruizze 0:0275ebccd8fe 53 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 54 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 55 //Ascenso
caaruizze 0:0275ebccd8fe 56 if(b1.read()==1)
caaruizze 0:0275ebccd8fe 57 {
caaruizze 0:0275ebccd8fe 58 k=0;
caaruizze 0:0275ebccd8fe 59 }
caaruizze 0:0275ebccd8fe 60 if(b1.read()==0 && k<25)
caaruizze 0:0275ebccd8fe 61 {//1.1
caaruizze 0:0275ebccd8fe 62 k=k+1;
caaruizze 0:0275ebccd8fe 63 i=i+1;
caaruizze 0:0275ebccd8fe 64 wait(0.2);
caaruizze 0:0275ebccd8fe 65 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 66 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 67 }//1.1
caaruizze 0:0275ebccd8fe 68 if(b1.read()==0 && k>=25 && k<50)
caaruizze 0:0275ebccd8fe 69 {//1.2
caaruizze 0:0275ebccd8fe 70 k=k+1;
caaruizze 0:0275ebccd8fe 71 i=i+5;
caaruizze 0:0275ebccd8fe 72 wait(0.2);
caaruizze 0:0275ebccd8fe 73 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 74 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 75 }//1.2
caaruizze 0:0275ebccd8fe 76
caaruizze 0:0275ebccd8fe 77 if(b1.read()==0 && k>=50 && k<75)
caaruizze 0:0275ebccd8fe 78 {//1.3
caaruizze 0:0275ebccd8fe 79 k=k+1;
caaruizze 0:0275ebccd8fe 80 i=i+10;
caaruizze 0:0275ebccd8fe 81 wait(0.2);
caaruizze 0:0275ebccd8fe 82 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 83 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 84 }//1.3
caaruizze 0:0275ebccd8fe 85
caaruizze 0:0275ebccd8fe 86 if(b1.read()==0 && k>=75 && k<100)
caaruizze 0:0275ebccd8fe 87 {//1.4
caaruizze 0:0275ebccd8fe 88 k=k+1;
caaruizze 0:0275ebccd8fe 89 i=i+100;
caaruizze 0:0275ebccd8fe 90 wait(0.2);
caaruizze 0:0275ebccd8fe 91 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 92 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 93 }//1.4
caaruizze 0:0275ebccd8fe 94 if(b1.read()==0 && k>=100 && k<125)
caaruizze 0:0275ebccd8fe 95 {//1.5
caaruizze 0:0275ebccd8fe 96 k=k+1;
caaruizze 0:0275ebccd8fe 97 i=i+1000;
caaruizze 0:0275ebccd8fe 98 wait(0.2);
caaruizze 0:0275ebccd8fe 99 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 100 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 101 if(i>9999)
caaruizze 0:0275ebccd8fe 102 {//1.5.1
caaruizze 0:0275ebccd8fe 103 i=9999;
caaruizze 0:0275ebccd8fe 104 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 105 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 106 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 107 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 108 }//1.5.1
caaruizze 0:0275ebccd8fe 109 }//1.5
caaruizze 0:0275ebccd8fe 110 //Descenso
caaruizze 0:0275ebccd8fe 111 if(b3.read()==1)
caaruizze 0:0275ebccd8fe 112 {
caaruizze 0:0275ebccd8fe 113 u=0;
caaruizze 0:0275ebccd8fe 114 }
caaruizze 0:0275ebccd8fe 115 if(b3.read()==0 && u<25)
caaruizze 0:0275ebccd8fe 116 {//2.1
caaruizze 0:0275ebccd8fe 117 u=u+1;
caaruizze 0:0275ebccd8fe 118 i=i-1;
caaruizze 0:0275ebccd8fe 119 wait(0.2);
caaruizze 0:0275ebccd8fe 120 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 121 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 122 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 123 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 124 }//2.1
caaruizze 0:0275ebccd8fe 125 if(b3.read()==0 && u>=25 && u<50)
caaruizze 0:0275ebccd8fe 126 {//2.2
caaruizze 0:0275ebccd8fe 127 u=u+1;
caaruizze 0:0275ebccd8fe 128 i=i-5;
caaruizze 0:0275ebccd8fe 129 wait(0.2);
caaruizze 0:0275ebccd8fe 130 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 131 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 132 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 133 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 134 }//2.2
caaruizze 0:0275ebccd8fe 135
caaruizze 0:0275ebccd8fe 136 if(b3.read()==0 && u>=50 && u<75)
caaruizze 0:0275ebccd8fe 137 {//2.3
caaruizze 0:0275ebccd8fe 138 u=u+1;
caaruizze 0:0275ebccd8fe 139 i=i-10;
caaruizze 0:0275ebccd8fe 140 wait(0.2);
caaruizze 0:0275ebccd8fe 141 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 142 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 143 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 144 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 145 }//2.3
caaruizze 0:0275ebccd8fe 146
caaruizze 0:0275ebccd8fe 147 if(b3.read()==0 && u>=75 && u<100)
caaruizze 0:0275ebccd8fe 148 {//2.4
caaruizze 0:0275ebccd8fe 149 u=u+1;
caaruizze 0:0275ebccd8fe 150 i=i-100;
caaruizze 0:0275ebccd8fe 151 wait(0.2);
caaruizze 0:0275ebccd8fe 152 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 153 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 154 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 155 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 156 }//2.4
caaruizze 0:0275ebccd8fe 157 if(b3.read()==0 && u>=100 && u<125)
caaruizze 0:0275ebccd8fe 158 {//2.5
caaruizze 0:0275ebccd8fe 159 u=u-1;
caaruizze 0:0275ebccd8fe 160 i=i-1000;
caaruizze 0:0275ebccd8fe 161 wait(0.2);
caaruizze 0:0275ebccd8fe 162 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 163 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 164 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 165 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 166 }//2.5
caaruizze 0:0275ebccd8fe 167 if(i<0)
caaruizze 0:0275ebccd8fe 168 {//2.6
caaruizze 0:0275ebccd8fe 169 i=0;
caaruizze 0:0275ebccd8fe 170 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 171 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 172 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 173 lcd.printf("%d",i);
caaruizze 0:0275ebccd8fe 174 }//2.6
caaruizze 0:0275ebccd8fe 175
caaruizze 0:0275ebccd8fe 176 }//a
caaruizze 0:0275ebccd8fe 177
caaruizze 0:0275ebccd8fe 178 if(x==2)
caaruizze 0:0275ebccd8fe 179 {//b
caaruizze 0:0275ebccd8fe 180 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 181 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 182 //Ascenso
caaruizze 0:0275ebccd8fe 183 if(b1.read()==1)
caaruizze 0:0275ebccd8fe 184 {
caaruizze 0:0275ebccd8fe 185 l=0;
caaruizze 0:0275ebccd8fe 186 }
caaruizze 0:0275ebccd8fe 187 if(b1.read()==0 && l<25)
caaruizze 0:0275ebccd8fe 188 {//1.1
caaruizze 0:0275ebccd8fe 189 l=l+1;
caaruizze 0:0275ebccd8fe 190 j=j+1;
caaruizze 0:0275ebccd8fe 191 wait(0.2);
caaruizze 0:0275ebccd8fe 192 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 193 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 194 }//1.1
caaruizze 0:0275ebccd8fe 195 if(b1.read()==0 && l>=25 && l<50)
caaruizze 0:0275ebccd8fe 196 {//1.2
caaruizze 0:0275ebccd8fe 197 l=l+1;
caaruizze 0:0275ebccd8fe 198 j=j+5;
caaruizze 0:0275ebccd8fe 199 wait(0.2);
caaruizze 0:0275ebccd8fe 200 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 201 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 202 }//1.2
caaruizze 0:0275ebccd8fe 203
caaruizze 0:0275ebccd8fe 204 if(b1.read()==0 && l>=50 && l<75)
caaruizze 0:0275ebccd8fe 205 {//1.3
caaruizze 0:0275ebccd8fe 206 l=l+1;
caaruizze 0:0275ebccd8fe 207 j=j+10;
caaruizze 0:0275ebccd8fe 208 wait(0.2);
caaruizze 0:0275ebccd8fe 209 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 210 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 211 }//1.3
caaruizze 0:0275ebccd8fe 212
caaruizze 0:0275ebccd8fe 213 if(b1.read()==0 && l>=75 && l<100)
caaruizze 0:0275ebccd8fe 214 {//1.4
caaruizze 0:0275ebccd8fe 215 l=l+1;
caaruizze 0:0275ebccd8fe 216 j=j+100;
caaruizze 0:0275ebccd8fe 217 wait(0.2);
caaruizze 0:0275ebccd8fe 218 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 219 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 220 }//1.4
caaruizze 0:0275ebccd8fe 221 if(b1.read()==0 && l>=100 && l<125)
caaruizze 0:0275ebccd8fe 222 {//1.5
caaruizze 0:0275ebccd8fe 223 l=l+1;
caaruizze 0:0275ebccd8fe 224 j=j+1000;
caaruizze 0:0275ebccd8fe 225 wait(0.2);
caaruizze 0:0275ebccd8fe 226 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 227 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 228 if(j>9999)
caaruizze 0:0275ebccd8fe 229 {//1.5.1
caaruizze 0:0275ebccd8fe 230 j=9999;
caaruizze 0:0275ebccd8fe 231 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 232 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 233 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 234 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 235 }//1.5.1
caaruizze 0:0275ebccd8fe 236 }//1.5
caaruizze 0:0275ebccd8fe 237 //Descenso
caaruizze 0:0275ebccd8fe 238 if(b3.read()==1)
caaruizze 0:0275ebccd8fe 239 {
caaruizze 0:0275ebccd8fe 240 g=0;
caaruizze 0:0275ebccd8fe 241 }
caaruizze 0:0275ebccd8fe 242 if(b3.read()==0 && g<25)
caaruizze 0:0275ebccd8fe 243 {//2.1
caaruizze 0:0275ebccd8fe 244 g=g+1;
caaruizze 0:0275ebccd8fe 245 j=j-1;
caaruizze 0:0275ebccd8fe 246 wait(0.2);
caaruizze 0:0275ebccd8fe 247 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 248 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 249 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 250 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 251 }//2.1
caaruizze 0:0275ebccd8fe 252 if(b3.read()==0 && g>=25 && g<50)
caaruizze 0:0275ebccd8fe 253 {//2.2
caaruizze 0:0275ebccd8fe 254 g=g+1;
caaruizze 0:0275ebccd8fe 255 j=j-5;
caaruizze 0:0275ebccd8fe 256 wait(0.2);
caaruizze 0:0275ebccd8fe 257 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 258 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 259 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 260 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 261 }//2.2
caaruizze 0:0275ebccd8fe 262
caaruizze 0:0275ebccd8fe 263 if(b3.read()==0 && g>=50 && g<75)
caaruizze 0:0275ebccd8fe 264 {//2.3
caaruizze 0:0275ebccd8fe 265 g=g+1;
caaruizze 0:0275ebccd8fe 266 j=j-10;
caaruizze 0:0275ebccd8fe 267 wait(0.2);
caaruizze 0:0275ebccd8fe 268 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 269 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 270 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 271 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 272 }//2.3
caaruizze 0:0275ebccd8fe 273
caaruizze 0:0275ebccd8fe 274 if(b3.read()==0 && g>=75 && g<100)
caaruizze 0:0275ebccd8fe 275 {//2.4
caaruizze 0:0275ebccd8fe 276 g=g+1;
caaruizze 0:0275ebccd8fe 277 j=j-100;
caaruizze 0:0275ebccd8fe 278 wait(0.2);
caaruizze 0:0275ebccd8fe 279 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 280 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 281 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 282 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 283 }//2.4
caaruizze 0:0275ebccd8fe 284 if(b3.read()==0 && g>=100 && g<125)
caaruizze 0:0275ebccd8fe 285 {//2.5
caaruizze 0:0275ebccd8fe 286 g=g-1;
caaruizze 0:0275ebccd8fe 287 j=j-1000;
caaruizze 0:0275ebccd8fe 288 wait(0.2);
caaruizze 0:0275ebccd8fe 289 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 290 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 291 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 292 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 293 }//2.5
caaruizze 0:0275ebccd8fe 294 if(j<0)
caaruizze 0:0275ebccd8fe 295 {//2.6
caaruizze 0:0275ebccd8fe 296 j=0;
caaruizze 0:0275ebccd8fe 297 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 298 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 299 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 300 lcd.printf("%d",j);
caaruizze 0:0275ebccd8fe 301 }//2.6
caaruizze 0:0275ebccd8fe 302
caaruizze 0:0275ebccd8fe 303
caaruizze 0:0275ebccd8fe 304 }//b
caaruizze 0:0275ebccd8fe 305
caaruizze 0:0275ebccd8fe 306 if(x==3)
caaruizze 0:0275ebccd8fe 307 {//c
caaruizze 0:0275ebccd8fe 308 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 309 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 310 if(b1.read()==1)
caaruizze 0:0275ebccd8fe 311 {
caaruizze 0:0275ebccd8fe 312 n=0;
caaruizze 0:0275ebccd8fe 313 }
caaruizze 0:0275ebccd8fe 314 if(b1.read()==0 && n<25)
caaruizze 0:0275ebccd8fe 315 {//1.1
caaruizze 0:0275ebccd8fe 316 n=n+1;
caaruizze 0:0275ebccd8fe 317 m=m+1;
caaruizze 0:0275ebccd8fe 318 wait(0.2);
caaruizze 0:0275ebccd8fe 319 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 320 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 321 }//1.1
caaruizze 0:0275ebccd8fe 322 if(b1.read()==0 && n>=25 && n<50)
caaruizze 0:0275ebccd8fe 323 {//1.2
caaruizze 0:0275ebccd8fe 324 n=n+1;
caaruizze 0:0275ebccd8fe 325 m=m+5;
caaruizze 0:0275ebccd8fe 326 wait(0.2);
caaruizze 0:0275ebccd8fe 327 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 328 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 329 }//1.2
caaruizze 0:0275ebccd8fe 330
caaruizze 0:0275ebccd8fe 331 if(b1.read()==0 && n>=50 && n<75)
caaruizze 0:0275ebccd8fe 332 {//1.3
caaruizze 0:0275ebccd8fe 333 n=n+1;
caaruizze 0:0275ebccd8fe 334 m=m+10;
caaruizze 0:0275ebccd8fe 335 wait(0.2);
caaruizze 0:0275ebccd8fe 336 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 337 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 338 }//1.3
caaruizze 0:0275ebccd8fe 339
caaruizze 0:0275ebccd8fe 340 if(b1.read()==0 && n>=75 && n<100)
caaruizze 0:0275ebccd8fe 341 {//1.4
caaruizze 0:0275ebccd8fe 342 n=n+1;
caaruizze 0:0275ebccd8fe 343 m=m+100;
caaruizze 0:0275ebccd8fe 344 wait(0.2);
caaruizze 0:0275ebccd8fe 345 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 346 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 347 }//1.4
caaruizze 0:0275ebccd8fe 348 if(b1.read()==0 && n>=100 && n<125)
caaruizze 0:0275ebccd8fe 349 {//1.5
caaruizze 0:0275ebccd8fe 350 n=n+1;
caaruizze 0:0275ebccd8fe 351 m=m+1000;
caaruizze 0:0275ebccd8fe 352 wait(0.2);
caaruizze 0:0275ebccd8fe 353 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 354 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 355 if(m>9999)
caaruizze 0:0275ebccd8fe 356 {//1.5.1
caaruizze 0:0275ebccd8fe 357 m=9999;
caaruizze 0:0275ebccd8fe 358 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 359 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 360 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 361 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 362 }//1.5.1
caaruizze 0:0275ebccd8fe 363 }//1.5
caaruizze 0:0275ebccd8fe 364 //Descenso
caaruizze 0:0275ebccd8fe 365 if(b3.read()==1)
caaruizze 0:0275ebccd8fe 366 {
caaruizze 0:0275ebccd8fe 367 q=0;
caaruizze 0:0275ebccd8fe 368 }
caaruizze 0:0275ebccd8fe 369 if(b3.read()==0 && q<25)
caaruizze 0:0275ebccd8fe 370 {//2.1
caaruizze 0:0275ebccd8fe 371 q=q+1;
caaruizze 0:0275ebccd8fe 372 m=m-1;
caaruizze 0:0275ebccd8fe 373 wait(0.2);
caaruizze 0:0275ebccd8fe 374 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 375 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 376 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 377 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 378 }//2.1
caaruizze 0:0275ebccd8fe 379 if(b3.read()==0 && q>=25 && q<50)
caaruizze 0:0275ebccd8fe 380 {//2.2
caaruizze 0:0275ebccd8fe 381 q=q+1;
caaruizze 0:0275ebccd8fe 382 m=m-5;
caaruizze 0:0275ebccd8fe 383 wait(0.2);
caaruizze 0:0275ebccd8fe 384 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 385 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 386 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 387 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 388 }//2.2
caaruizze 0:0275ebccd8fe 389
caaruizze 0:0275ebccd8fe 390 if(b3.read()==0 && q>=50 && q<75)
caaruizze 0:0275ebccd8fe 391 {//2.3
caaruizze 0:0275ebccd8fe 392 q=q+1;
caaruizze 0:0275ebccd8fe 393 m=m-10;
caaruizze 0:0275ebccd8fe 394 wait(0.2);
caaruizze 0:0275ebccd8fe 395 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 396 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 397 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 398 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 399 }//2.3
caaruizze 0:0275ebccd8fe 400
caaruizze 0:0275ebccd8fe 401 if(b3.read()==0 && q>=75 && q<100)
caaruizze 0:0275ebccd8fe 402 {//2.4
caaruizze 0:0275ebccd8fe 403 q=q+1;
caaruizze 0:0275ebccd8fe 404 m=m-100;
caaruizze 0:0275ebccd8fe 405 wait(0.2);
caaruizze 0:0275ebccd8fe 406 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 407 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 408 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 409 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 410 }//2.4
caaruizze 0:0275ebccd8fe 411 if(b3.read()==0 && q>=100 && q<125)
caaruizze 0:0275ebccd8fe 412 {//2.5
caaruizze 0:0275ebccd8fe 413 q=q+1;
caaruizze 0:0275ebccd8fe 414 m=m-1000;
caaruizze 0:0275ebccd8fe 415 wait(0.2);
caaruizze 0:0275ebccd8fe 416 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 417 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 418 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 419 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 420 }//2.5
caaruizze 0:0275ebccd8fe 421 if(m<0)
caaruizze 0:0275ebccd8fe 422 {//2.6
caaruizze 0:0275ebccd8fe 423 m=0;
caaruizze 0:0275ebccd8fe 424 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 425 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 426 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 427 lcd.printf("%d",m);
caaruizze 0:0275ebccd8fe 428 }//2.6
caaruizze 0:0275ebccd8fe 429
caaruizze 0:0275ebccd8fe 430 }//c
caaruizze 0:0275ebccd8fe 431
caaruizze 0:0275ebccd8fe 432 if(x==4)
caaruizze 0:0275ebccd8fe 433 {//d
caaruizze 0:0275ebccd8fe 434 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 435 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 436
caaruizze 0:0275ebccd8fe 437 if(b1.read()==1)
caaruizze 0:0275ebccd8fe 438 {
caaruizze 0:0275ebccd8fe 439 n=0;
caaruizze 0:0275ebccd8fe 440 }
caaruizze 0:0275ebccd8fe 441 if(b1.read()==0 && p<25)
caaruizze 0:0275ebccd8fe 442 {//1.1
caaruizze 0:0275ebccd8fe 443 p=p+1;
caaruizze 0:0275ebccd8fe 444 o=o+1;
caaruizze 0:0275ebccd8fe 445 wait(0.2);
caaruizze 0:0275ebccd8fe 446 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 447 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 448 }//1.1
caaruizze 0:0275ebccd8fe 449 if(b1.read()==0 && p>=25 && p<50)
caaruizze 0:0275ebccd8fe 450 {//1.2
caaruizze 0:0275ebccd8fe 451 p=p+1;
caaruizze 0:0275ebccd8fe 452 o=o+5;
caaruizze 0:0275ebccd8fe 453 wait(0.2);
caaruizze 0:0275ebccd8fe 454 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 455 lcd.printf("%f",o);
caaruizze 0:0275ebccd8fe 456 }//1.2
caaruizze 0:0275ebccd8fe 457
caaruizze 0:0275ebccd8fe 458 if(b1.read()==0 && p>=50 && p<75)
caaruizze 0:0275ebccd8fe 459 {//1.3
caaruizze 0:0275ebccd8fe 460 p=p+1;
caaruizze 0:0275ebccd8fe 461 o=o+10;
caaruizze 0:0275ebccd8fe 462 wait(0.2);
caaruizze 0:0275ebccd8fe 463 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 464 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 465 }//1.3
caaruizze 0:0275ebccd8fe 466
caaruizze 0:0275ebccd8fe 467 if(b1.read()==0 && p>=75 && p<100)
caaruizze 0:0275ebccd8fe 468 {//1.4
caaruizze 0:0275ebccd8fe 469 p=p+1;
caaruizze 0:0275ebccd8fe 470 o=o+100;
caaruizze 0:0275ebccd8fe 471 wait(0.2);
caaruizze 0:0275ebccd8fe 472 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 473 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 474 }//1.4
caaruizze 0:0275ebccd8fe 475 if(b1.read()==0 && p>=100 && p<125)
caaruizze 0:0275ebccd8fe 476 {//1.5
caaruizze 0:0275ebccd8fe 477 p=p+1;
caaruizze 0:0275ebccd8fe 478 o=o+1000;
caaruizze 0:0275ebccd8fe 479 wait(0.2);
caaruizze 0:0275ebccd8fe 480 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 481 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 482 if(o>9999)
caaruizze 0:0275ebccd8fe 483 {//1.5.1
caaruizze 0:0275ebccd8fe 484 o=9999;
caaruizze 0:0275ebccd8fe 485 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 486 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 487 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 488 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 489 }//1.5.1
caaruizze 0:0275ebccd8fe 490 }//1.5
caaruizze 0:0275ebccd8fe 491 //Descenso
caaruizze 0:0275ebccd8fe 492 if(b3.read()==1)
caaruizze 0:0275ebccd8fe 493 {
caaruizze 0:0275ebccd8fe 494 h=0;
caaruizze 0:0275ebccd8fe 495 }
caaruizze 0:0275ebccd8fe 496 if(b3.read()==0 && h<25)
caaruizze 0:0275ebccd8fe 497 {//2.1
caaruizze 0:0275ebccd8fe 498 h=h+1;
caaruizze 0:0275ebccd8fe 499 o=o-1;
caaruizze 0:0275ebccd8fe 500 wait(0.2);
caaruizze 0:0275ebccd8fe 501 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 502 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 503 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 504 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 505 }//2.1
caaruizze 0:0275ebccd8fe 506 if(b3.read()==0 && h>=25 && h<50)
caaruizze 0:0275ebccd8fe 507 {//2.2
caaruizze 0:0275ebccd8fe 508 h=h+1;
caaruizze 0:0275ebccd8fe 509 o=o-5;
caaruizze 0:0275ebccd8fe 510 wait(0.2);
caaruizze 0:0275ebccd8fe 511 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 512 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 513 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 514 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 515 }//2.2
caaruizze 0:0275ebccd8fe 516
caaruizze 0:0275ebccd8fe 517 if(b3.read()==0 && h>=50 && h<75)
caaruizze 0:0275ebccd8fe 518 {//2.3
caaruizze 0:0275ebccd8fe 519 h=h+1;
caaruizze 0:0275ebccd8fe 520 o=o-10;
caaruizze 0:0275ebccd8fe 521 wait(0.2);
caaruizze 0:0275ebccd8fe 522 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 523 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 524 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 525 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 526 }//2.3
caaruizze 0:0275ebccd8fe 527
caaruizze 0:0275ebccd8fe 528 if(b3.read()==0 && h>=75 && h<100)
caaruizze 0:0275ebccd8fe 529 {//2.4
caaruizze 0:0275ebccd8fe 530 h=h+1;
caaruizze 0:0275ebccd8fe 531 o=o-100;
caaruizze 0:0275ebccd8fe 532 wait(0.2);
caaruizze 0:0275ebccd8fe 533 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 534 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 535 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 536 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 537 }//2.4
caaruizze 0:0275ebccd8fe 538 if(b3.read()==0 && h>=100 && h<125)
caaruizze 0:0275ebccd8fe 539 {//2.5
caaruizze 0:0275ebccd8fe 540 h=h+1;
caaruizze 0:0275ebccd8fe 541 o=o-1000;
caaruizze 0:0275ebccd8fe 542 wait(0.2);
caaruizze 0:0275ebccd8fe 543 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 544 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 545 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 546 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 547 }//2.5
caaruizze 0:0275ebccd8fe 548 if(o<0)
caaruizze 0:0275ebccd8fe 549 {//2.6
caaruizze 0:0275ebccd8fe 550 o=0;
caaruizze 0:0275ebccd8fe 551 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 552 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 553 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 554 lcd.printf("%d",o);
caaruizze 0:0275ebccd8fe 555 }//2.6
caaruizze 0:0275ebccd8fe 556 }//d
caaruizze 0:0275ebccd8fe 557
caaruizze 0:0275ebccd8fe 558 if(x>4)
caaruizze 0:0275ebccd8fe 559 {
caaruizze 0:0275ebccd8fe 560 x=1;
caaruizze 0:0275ebccd8fe 561 }
caaruizze 0:0275ebccd8fe 562 if(b4.read()==0)
caaruizze 0:0275ebccd8fe 563 {
caaruizze 0:0275ebccd8fe 564
caaruizze 0:0275ebccd8fe 565
caaruizze 0:0275ebccd8fe 566 goto PID;
caaruizze 0:0275ebccd8fe 567 }
caaruizze 0:0275ebccd8fe 568 }//while1
caaruizze 0:0275ebccd8fe 569
caaruizze 0:0275ebccd8fe 570 PID:
caaruizze 0:0275ebccd8fe 571
caaruizze 0:0275ebccd8fe 572 wait(0.5); // espera 1 segundo
caaruizze 0:0275ebccd8fe 573 lcd.cls(); // borra lcd
caaruizze 0:0275ebccd8fe 574 wait(0.2);
caaruizze 0:0275ebccd8fe 575 lcd.printf("DATOS GUARDADOS!");
caaruizze 0:0275ebccd8fe 576 wait(1);
caaruizze 0:0275ebccd8fe 577 lcd.cls();
caaruizze 0:0275ebccd8fe 578
caaruizze 0:0275ebccd8fe 579 lcd.locate(0,0);
caaruizze 0:0275ebccd8fe 580 lcd.printf("Er:");
caaruizze 0:0275ebccd8fe 581 lcd.locate(8,0);
caaruizze 0:0275ebccd8fe 582 lcd.printf("Me:");
caaruizze 0:0275ebccd8fe 583 lcd.locate(0,1);
caaruizze 0:0275ebccd8fe 584 lcd.printf("Sp:");
caaruizze 0:0275ebccd8fe 585 lcd.locate(8,1);
caaruizze 0:0275ebccd8fe 586 lcd.printf("CO:");
caaruizze 0:0275ebccd8fe 587
caaruizze 0:0275ebccd8fe 588 while(1)
caaruizze 0:0275ebccd8fe 589 {//whilePID
caaruizze 0:0275ebccd8fe 590 wait(0.1);
caaruizze 0:0275ebccd8fe 591 sp=i;
caaruizze 0:0275ebccd8fe 592 kp=j;
caaruizze 0:0275ebccd8fe 593 kd=m;
caaruizze 0:0275ebccd8fe 594 ki=o;
caaruizze 0:0275ebccd8fe 595
caaruizze 0:0275ebccd8fe 596 Sp=(sp*3.3)/100;
caaruizze 0:0275ebccd8fe 597 med=Vin*3.3;
caaruizze 0:0275ebccd8fe 598 err = (Sp-med);
caaruizze 0:0275ebccd8fe 599 ap = kp*err;
caaruizze 0:0275ebccd8fe 600 ai =(ki*err)+ai;
caaruizze 0:0275ebccd8fe 601
caaruizze 0:0275ebccd8fe 602 ad = kd*(err-err_v);
caaruizze 0:0275ebccd8fe 603 pid = (ap+ai+ad);
caaruizze 0:0275ebccd8fe 604 if (pid<0)
caaruizze 0:0275ebccd8fe 605 {
caaruizze 0:0275ebccd8fe 606 pid=0;
caaruizze 0:0275ebccd8fe 607 }
caaruizze 0:0275ebccd8fe 608 if (pid>99)
caaruizze 0:0275ebccd8fe 609 {
caaruizze 0:0275ebccd8fe 610 pid=100;
caaruizze 0:0275ebccd8fe 611 }
caaruizze 0:0275ebccd8fe 612
caaruizze 0:0275ebccd8fe 613 Vo=pid/100;
caaruizze 0:0275ebccd8fe 614
caaruizze 0:0275ebccd8fe 615
caaruizze 0:0275ebccd8fe 616 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 617 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 618 lcd.locate(3,0);
caaruizze 0:0275ebccd8fe 619 lcd.printf("%.1f",err);
caaruizze 0:0275ebccd8fe 620 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 621 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 622 lcd.locate(11,0);
caaruizze 0:0275ebccd8fe 623 lcd.printf("%.1f",med);
caaruizze 0:0275ebccd8fe 624 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 625 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 626 lcd.locate(3,1);
caaruizze 0:0275ebccd8fe 627 lcd.printf("%.1f",Sp);
caaruizze 0:0275ebccd8fe 628 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 629 lcd.printf(" ");
caaruizze 0:0275ebccd8fe 630 lcd.locate(11,1);
caaruizze 0:0275ebccd8fe 631 lcd.printf("%.1f",pid);
caaruizze 0:0275ebccd8fe 632
caaruizze 0:0275ebccd8fe 633 err_v = err;
caaruizze 0:0275ebccd8fe 634 }//whilePID
caaruizze 0:0275ebccd8fe 635 }//main