PID con pulsadores para circuito RC
Dependencies: Debounced TextLCD mbed
main.cpp@2:c4dc480057f6, 2015-10-13 (annotated)
- Committer:
- Meli
- Date:
- Tue Oct 13 22:10:20 2015 +0000
- Revision:
- 2:c4dc480057f6
- Parent:
- 1:744ee5bf7b7c
PID con pulsadores
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Meli | 0:96212ecff217 | 1 | #include "mbed.h" |
Meli | 0:96212ecff217 | 2 | #include "DebouncedIn.h" |
Meli | 0:96212ecff217 | 3 | #include "TextLCD.h" |
Meli | 0:96212ecff217 | 4 | |
Meli | 2:c4dc480057f6 | 5 | |
Meli | 0:96212ecff217 | 6 | AnalogIn Vin(PTC2); // entrada analoga |
Meli | 0:96212ecff217 | 7 | AnalogOut Vout(PTE30); // salida analoga |
Meli | 0:96212ecff217 | 8 | |
Meli | 0:96212ecff217 | 9 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 |
Meli | 0:96212ecff217 | 10 | int presionado_incremento(int columna,int fila,int constante);//funcion creada para incrementar el valor con el boton hundido |
Meli | 0:96212ecff217 | 11 | int presionado_decremento(int columna,int fila,int constante);//funcion entrada para decrementar el valor con el boton hundido |
Meli | 0:96212ecff217 | 12 | DigitalOut led1(LED1); |
Meli | 0:96212ecff217 | 13 | DigitalOut led2(LED2); |
Meli | 0:96212ecff217 | 14 | DigitalOut led3(LED3); |
Meli | 0:96212ecff217 | 15 | DebouncedIn button1(PTC12); //incrementar |
Meli | 0:96212ecff217 | 16 | DebouncedIn button2(PTC13);//decrementar |
Meli | 0:96212ecff217 | 17 | DebouncedIn button3(PTC16);//cambiar |
Meli | 0:96212ecff217 | 18 | DebouncedIn button4(PTC17); //enter |
Meli | 0:96212ecff217 | 19 | int C1=0x0F; |
Meli | 0:96212ecff217 | 20 | int sp=0,kp=0,kd=0,ki=0,p=1,bandera = 0; |
Meli | 0:96212ecff217 | 21 | float error=0,pwmset,eInteg,pGain,ePrev,iGain,dGain,x; |
Meli | 0:96212ecff217 | 22 | int main() |
Meli | 0:96212ecff217 | 23 | { |
Meli | 0:96212ecff217 | 24 | lcd.cls(); |
Meli | 0:96212ecff217 | 25 | lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD |
Meli | 0:96212ecff217 | 26 | lcd.locate(8,0); |
Meli | 0:96212ecff217 | 27 | lcd.printf("kp=%d",kp); |
Meli | 0:96212ecff217 | 28 | lcd.locate(0,1); |
Meli | 0:96212ecff217 | 29 | lcd.printf("Ki=%d", ki); |
Meli | 0:96212ecff217 | 30 | lcd.locate(8,1); |
Meli | 0:96212ecff217 | 31 | lcd.printf("Kd=%d", kd); |
Meli | 0:96212ecff217 | 32 | lcd.locate(0,0); |
Meli | 0:96212ecff217 | 33 | lcd.printf("Sp=%d", sp); |
Meli | 0:96212ecff217 | 34 | |
Meli | 0:96212ecff217 | 35 | while(1) |
Meli | 0:96212ecff217 | 36 | { |
Meli | 0:96212ecff217 | 37 | |
Meli | 0:96212ecff217 | 38 | if (button1.falling())//se cuenta en el flanco de caida para el boton 1 |
Meli | 0:96212ecff217 | 39 | { |
Meli | 0:96212ecff217 | 40 | led1 =!led1; |
Meli | 0:96212ecff217 | 41 | |
Meli | 0:96212ecff217 | 42 | if (p==1)// posicion 1 en el LCD |
Meli | 0:96212ecff217 | 43 | { |
Meli | 0:96212ecff217 | 44 | ++sp;//incrementa de a uno |
Meli | 1:744ee5bf7b7c | 45 | if (sp>=5) // se limita sp porque el mayor valor que toma es 5 |
Meli | 0:96212ecff217 | 46 | {sp=5; |
Meli | 0:96212ecff217 | 47 | } |
Meli | 0:96212ecff217 | 48 | lcd.locate(3,0); |
Meli | 0:96212ecff217 | 49 | lcd.printf(" ");//borra el valor anterior |
Meli | 0:96212ecff217 | 50 | lcd.locate(3,0); |
Meli | 0:96212ecff217 | 51 | lcd.printf("%d", sp);//decimal |
Meli | 0:96212ecff217 | 52 | wait (0.5); //para evitar un error al hundir el boton, y que el programa no lo tome como si se hubiera dejado hundido el boton |
Meli | 0:96212ecff217 | 53 | |
Meli | 0:96212ecff217 | 54 | } |
Meli | 0:96212ecff217 | 55 | else if (p==2) // cambia a posicion 2 |
Meli | 0:96212ecff217 | 56 | { |
Meli | 0:96212ecff217 | 57 | kp = kp+1; |
Meli | 0:96212ecff217 | 58 | if (kp>=999)//se limita hasta 999 |
Meli | 0:96212ecff217 | 59 | { |
Meli | 0:96212ecff217 | 60 | kp= 999; |
Meli | 0:96212ecff217 | 61 | } |
Meli | 0:96212ecff217 | 62 | lcd.locate(11,0); |
Meli | 0:96212ecff217 | 63 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 64 | lcd.locate(11,0); |
Meli | 0:96212ecff217 | 65 | lcd.printf("%d", kp); |
Meli | 0:96212ecff217 | 66 | wait (0.5); //para evitar un error al hundir el boton, y que el programa no lo tome como si se hubiera dejado hundido el boton |
Meli | 0:96212ecff217 | 67 | |
Meli | 0:96212ecff217 | 68 | kp=presionado_incremento(11,0,kp); //se llama la funcion de incremento para kp |
Meli | 0:96212ecff217 | 69 | |
Meli | 0:96212ecff217 | 70 | } |
Meli | 0:96212ecff217 | 71 | else if (p==3) //cambia de posicion |
Meli | 0:96212ecff217 | 72 | { |
Meli | 0:96212ecff217 | 73 | ++ki; |
Meli | 0:96212ecff217 | 74 | if (ki>=999) |
Meli | 0:96212ecff217 | 75 | { |
Meli | 0:96212ecff217 | 76 | ki= 999; |
Meli | 0:96212ecff217 | 77 | } |
Meli | 0:96212ecff217 | 78 | lcd.locate(3,1); |
Meli | 0:96212ecff217 | 79 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 80 | lcd.locate(3,1); |
Meli | 0:96212ecff217 | 81 | lcd.printf("%d", ki); |
Meli | 0:96212ecff217 | 82 | wait (0.5); |
Meli | 0:96212ecff217 | 83 | ki = presionado_incremento(3,1,ki); //se llama la funcion de incremento para ki |
Meli | 0:96212ecff217 | 84 | } |
Meli | 0:96212ecff217 | 85 | else if (p==4)//cambia de posicion |
Meli | 0:96212ecff217 | 86 | { |
Meli | 0:96212ecff217 | 87 | ++kd; |
Meli | 0:96212ecff217 | 88 | if (kd>=999) |
Meli | 0:96212ecff217 | 89 | { |
Meli | 0:96212ecff217 | 90 | kd = 999; |
Meli | 0:96212ecff217 | 91 | } |
Meli | 0:96212ecff217 | 92 | lcd.locate(11,1); |
Meli | 0:96212ecff217 | 93 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 94 | lcd.locate(11,1); |
Meli | 0:96212ecff217 | 95 | lcd.printf("%d", kd); |
Meli | 0:96212ecff217 | 96 | wait (0.5); |
Meli | 0:96212ecff217 | 97 | kd = presionado_incremento(11,1,kd); //se llama la funcion de incremento para kd |
Meli | 0:96212ecff217 | 98 | } |
Meli | 0:96212ecff217 | 99 | } |
Meli | 0:96212ecff217 | 100 | if (button2.falling())//se cuenta en el flanco de caida para el boton 2 decrementar |
Meli | 0:96212ecff217 | 101 | { |
Meli | 0:96212ecff217 | 102 | led2 =!led2; |
Meli | 0:96212ecff217 | 103 | if (p==1) |
Meli | 0:96212ecff217 | 104 | { |
Meli | 0:96212ecff217 | 105 | if (sp==0) // no mostrar nada evita valores negativos |
Meli | 0:96212ecff217 | 106 | { |
Meli | 0:96212ecff217 | 107 | } |
Meli | 0:96212ecff217 | 108 | else |
Meli | 0:96212ecff217 | 109 | { |
Meli | 0:96212ecff217 | 110 | --sp; |
Meli | 0:96212ecff217 | 111 | lcd.locate(3,0); |
Meli | 1:744ee5bf7b7c | 112 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 113 | lcd.locate(3,0); |
Meli | 0:96212ecff217 | 114 | lcd.printf("%d", sp); |
Meli | 0:96212ecff217 | 115 | wait(0.5); |
Meli | 1:744ee5bf7b7c | 116 | //sp = presionado_decremento(3,0,sp); //se utiliza la funcion decremento |
Meli | 0:96212ecff217 | 117 | } |
Meli | 0:96212ecff217 | 118 | } |
Meli | 0:96212ecff217 | 119 | if (p==2) |
Meli | 0:96212ecff217 | 120 | { |
Meli | 0:96212ecff217 | 121 | if (kp==0) // no mostrar nada |
Meli | 0:96212ecff217 | 122 | { |
Meli | 0:96212ecff217 | 123 | } |
Meli | 0:96212ecff217 | 124 | else |
Meli | 0:96212ecff217 | 125 | { |
Meli | 0:96212ecff217 | 126 | --kp; |
Meli | 0:96212ecff217 | 127 | lcd.locate(11,0); |
Meli | 0:96212ecff217 | 128 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 129 | lcd.locate(11,0); |
Meli | 0:96212ecff217 | 130 | lcd.printf("%d", kp); |
Meli | 0:96212ecff217 | 131 | wait(0.5); |
Meli | 1:744ee5bf7b7c | 132 | // kp = presionado_decremento(11,0,kp); |
Meli | 0:96212ecff217 | 133 | } |
Meli | 0:96212ecff217 | 134 | } |
Meli | 0:96212ecff217 | 135 | if (p==3) |
Meli | 0:96212ecff217 | 136 | { |
Meli | 0:96212ecff217 | 137 | if (ki==0) // no mostrar nada |
Meli | 0:96212ecff217 | 138 | { |
Meli | 0:96212ecff217 | 139 | } |
Meli | 0:96212ecff217 | 140 | else |
Meli | 0:96212ecff217 | 141 | { |
Meli | 0:96212ecff217 | 142 | --ki; |
Meli | 0:96212ecff217 | 143 | lcd.locate(3,1); |
Meli | 0:96212ecff217 | 144 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 145 | lcd.locate(3,1); |
Meli | 0:96212ecff217 | 146 | lcd.printf("%d", ki); |
Meli | 0:96212ecff217 | 147 | wait(0.5); |
Meli | 1:744ee5bf7b7c | 148 | //ki = presionado_decremento(3,1,ki); |
Meli | 0:96212ecff217 | 149 | } |
Meli | 0:96212ecff217 | 150 | } |
Meli | 0:96212ecff217 | 151 | if (p==4) |
Meli | 0:96212ecff217 | 152 | { |
Meli | 0:96212ecff217 | 153 | if (kd==0) // no mostrar nada |
Meli | 0:96212ecff217 | 154 | { |
Meli | 0:96212ecff217 | 155 | } |
Meli | 0:96212ecff217 | 156 | else |
Meli | 0:96212ecff217 | 157 | { |
Meli | 0:96212ecff217 | 158 | --kd; |
Meli | 0:96212ecff217 | 159 | lcd.locate(11,1); |
Meli | 0:96212ecff217 | 160 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 161 | lcd.locate(11,1); |
Meli | 0:96212ecff217 | 162 | lcd.printf("%d", kd); |
Meli | 0:96212ecff217 | 163 | wait(0.5); |
Meli | 1:744ee5bf7b7c | 164 | // kd = presionado_decremento(11,1,kd); |
Meli | 0:96212ecff217 | 165 | } |
Meli | 0:96212ecff217 | 166 | } |
Meli | 0:96212ecff217 | 167 | } |
Meli | 0:96212ecff217 | 168 | |
Meli | 0:96212ecff217 | 169 | |
Meli | 0:96212ecff217 | 170 | |
Meli | 0:96212ecff217 | 171 | |
Meli | 0:96212ecff217 | 172 | if (button3.falling())//para el cambio de posicion |
Meli | 0:96212ecff217 | 173 | { |
Meli | 0:96212ecff217 | 174 | led3 =!led3; |
Meli | 0:96212ecff217 | 175 | if (p==1) |
Meli | 0:96212ecff217 | 176 | { |
Meli | 0:96212ecff217 | 177 | ++p; |
Meli | 0:96212ecff217 | 178 | lcd.locate(11,0); |
Meli | 0:96212ecff217 | 179 | lcd.printf("%d", kp); |
Meli | 0:96212ecff217 | 180 | |
Meli | 0:96212ecff217 | 181 | |
Meli | 0:96212ecff217 | 182 | } |
Meli | 0:96212ecff217 | 183 | else if (p==2) |
Meli | 0:96212ecff217 | 184 | { |
Meli | 0:96212ecff217 | 185 | ++p; |
Meli | 0:96212ecff217 | 186 | lcd.locate(3,1); |
Meli | 0:96212ecff217 | 187 | lcd.printf("%d", ki); |
Meli | 0:96212ecff217 | 188 | lcd.locate(3,1); |
Meli | 0:96212ecff217 | 189 | |
Meli | 0:96212ecff217 | 190 | } |
Meli | 0:96212ecff217 | 191 | else if (p==3) |
Meli | 0:96212ecff217 | 192 | { |
Meli | 0:96212ecff217 | 193 | ++p; |
Meli | 0:96212ecff217 | 194 | lcd.locate(11,1); |
Meli | 0:96212ecff217 | 195 | lcd.printf("%d", kd); |
Meli | 0:96212ecff217 | 196 | |
Meli | 0:96212ecff217 | 197 | |
Meli | 0:96212ecff217 | 198 | } |
Meli | 0:96212ecff217 | 199 | else if (p==4) |
Meli | 0:96212ecff217 | 200 | { |
Meli | 0:96212ecff217 | 201 | p=1; |
Meli | 0:96212ecff217 | 202 | lcd.locate(3,0); |
Meli | 0:96212ecff217 | 203 | lcd.printf("%d", sp); |
Meli | 0:96212ecff217 | 204 | |
Meli | 0:96212ecff217 | 205 | |
Meli | 0:96212ecff217 | 206 | } |
Meli | 0:96212ecff217 | 207 | } |
Meli | 0:96212ecff217 | 208 | |
Meli | 0:96212ecff217 | 209 | |
Meli | 0:96212ecff217 | 210 | |
Meli | 0:96212ecff217 | 211 | |
Meli | 0:96212ecff217 | 212 | //enter |
Meli | 0:96212ecff217 | 213 | if(button4.falling()) |
Meli | 0:96212ecff217 | 214 | { |
Meli | 0:96212ecff217 | 215 | lcd.cls(); // al undir el boton 4 se borra la pantalla |
Meli | 0:96212ecff217 | 216 | //for (int h=0;h<100;h++) |
Meli | 0:96212ecff217 | 217 | //Vout= Vout+0.01; |
Meli | 0:96212ecff217 | 218 | while(bandera==0) |
Meli | 0:96212ecff217 | 219 | { |
Meli | 0:96212ecff217 | 220 | wait(0.2); |
Meli | 0:96212ecff217 | 221 | x=Vout.read(); // lee el voltaje de salida que nuestra analoga pero en porcentaje |
Meli | 2:c4dc480057f6 | 222 | |
Meli | 0:96212ecff217 | 223 | //} |
Meli | 0:96212ecff217 | 224 | //pid |
Meli | 0:96212ecff217 | 225 | error = sp-x; // Calcula el error |
Meli | 0:96212ecff217 | 226 | pwmset = kp* error+ki * eInteg +kd* (error - ePrev); // ecuacion para el PID |
Meli | 2:c4dc480057f6 | 227 | pwmset=(0.976801/5)*pwmset; // como el voltaje calculado fue un porcentaje se realiza una conversion respectiva al valor de salida |
Meli | 0:96212ecff217 | 228 | Vout=pwmset; |
Meli | 0:96212ecff217 | 229 | eInteg =eInteg+ error; // integral |
Meli | 0:96212ecff217 | 230 | ePrev = error; |
Meli | 0:96212ecff217 | 231 | lcd.locate(0,1); |
Meli | 0:96212ecff217 | 232 | lcd.printf("error=%f",error); |
Meli | 0:96212ecff217 | 233 | lcd.locate(1,0); |
Meli | 0:96212ecff217 | 234 | lcd.printf("salida=%f",x); |
Meli | 0:96212ecff217 | 235 | if (button4.falling()) |
Meli | 0:96212ecff217 | 236 | { bandera=1; |
Meli | 0:96212ecff217 | 237 | lcd.cls(); |
Meli | 0:96212ecff217 | 238 | p=1; |
Meli | 0:96212ecff217 | 239 | lcd.locate(8,0); |
Meli | 0:96212ecff217 | 240 | lcd.printf("kp=%d",kp); |
Meli | 0:96212ecff217 | 241 | lcd.locate(0,1); |
Meli | 0:96212ecff217 | 242 | lcd.printf("Ki=%d", ki); |
Meli | 0:96212ecff217 | 243 | lcd.locate(8,1); |
Meli | 0:96212ecff217 | 244 | lcd.printf("Kd=%d", kd); |
Meli | 0:96212ecff217 | 245 | lcd.locate(0,0); |
Meli | 0:96212ecff217 | 246 | lcd.printf("Sp=%d", sp); |
Meli | 0:96212ecff217 | 247 | |
Meli | 0:96212ecff217 | 248 | } |
Meli | 0:96212ecff217 | 249 | |
Meli | 0:96212ecff217 | 250 | |
Meli | 0:96212ecff217 | 251 | } |
Meli | 0:96212ecff217 | 252 | bandera = 0; |
Meli | 0:96212ecff217 | 253 | } |
Meli | 0:96212ecff217 | 254 | |
Meli | 0:96212ecff217 | 255 | |
Meli | 0:96212ecff217 | 256 | |
Meli | 0:96212ecff217 | 257 | } |
Meli | 0:96212ecff217 | 258 | } |
Meli | 0:96212ecff217 | 259 | |
Meli | 0:96212ecff217 | 260 | |
Meli | 0:96212ecff217 | 261 | int presionado_incremento(int columna,int fila,int constante) |
Meli | 0:96212ecff217 | 262 | { |
Meli | 0:96212ecff217 | 263 | int marc=0,i=0; |
Meli | 0:96212ecff217 | 264 | |
Meli | 0:96212ecff217 | 265 | while(button1==0) // Cuando el boton 1 esta presionado |
Meli | 0:96212ecff217 | 266 | { |
Meli | 0:96212ecff217 | 267 | i=1; |
Meli | 0:96212ecff217 | 268 | wait (0.5); |
Meli | 0:96212ecff217 | 269 | |
Meli | 0:96212ecff217 | 270 | |
Meli | 0:96212ecff217 | 271 | if ((marc==2)&(i==1)) // entra cuando el modulo de la constante dividido 100 y el residuo es 0 |
Meli | 0:96212ecff217 | 272 | { |
Meli | 0:96212ecff217 | 273 | constante = constante+100; |
Meli | 0:96212ecff217 | 274 | if (constante>=999) |
Meli | 0:96212ecff217 | 275 | { |
Meli | 0:96212ecff217 | 276 | constante = 999; |
Meli | 0:96212ecff217 | 277 | } |
Meli | 0:96212ecff217 | 278 | |
Meli | 0:96212ecff217 | 279 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 280 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 281 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 282 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 283 | i=0; |
Meli | 0:96212ecff217 | 284 | |
Meli | 0:96212ecff217 | 285 | } |
Meli | 0:96212ecff217 | 286 | if ((marc==1)&(i==1)) |
Meli | 0:96212ecff217 | 287 | { |
Meli | 0:96212ecff217 | 288 | constante=constante+10; |
Meli | 0:96212ecff217 | 289 | if(constante%100==0){marc=2;} // si el residuo de la constante dividido 100, la bandera es igual a dos |
Meli | 0:96212ecff217 | 290 | if (constante>= 999) |
Meli | 0:96212ecff217 | 291 | { |
Meli | 0:96212ecff217 | 292 | constante = 999; |
Meli | 0:96212ecff217 | 293 | } |
Meli | 0:96212ecff217 | 294 | |
Meli | 0:96212ecff217 | 295 | |
Meli | 0:96212ecff217 | 296 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 297 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 298 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 299 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 300 | i=0; } |
Meli | 0:96212ecff217 | 301 | |
Meli | 0:96212ecff217 | 302 | if ((marc==0)&(i==1)) |
Meli | 0:96212ecff217 | 303 | { |
Meli | 0:96212ecff217 | 304 | ++constante; |
Meli | 0:96212ecff217 | 305 | if(constante%10==0){marc=1;} |
Meli | 0:96212ecff217 | 306 | if (constante>= 999) |
Meli | 0:96212ecff217 | 307 | { |
Meli | 0:96212ecff217 | 308 | constante = 999; |
Meli | 0:96212ecff217 | 309 | } |
Meli | 0:96212ecff217 | 310 | |
Meli | 0:96212ecff217 | 311 | |
Meli | 0:96212ecff217 | 312 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 313 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 314 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 315 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 316 | i=0; } |
Meli | 0:96212ecff217 | 317 | |
Meli | 0:96212ecff217 | 318 | |
Meli | 0:96212ecff217 | 319 | |
Meli | 0:96212ecff217 | 320 | } |
Meli | 0:96212ecff217 | 321 | marc=0; |
Meli | 0:96212ecff217 | 322 | return constante; |
Meli | 0:96212ecff217 | 323 | } |
Meli | 0:96212ecff217 | 324 | |
Meli | 0:96212ecff217 | 325 | int presionado_decremento(int columna,int fila,int constante) |
Meli | 0:96212ecff217 | 326 | { |
Meli | 0:96212ecff217 | 327 | int marc=0,i=0; |
Meli | 0:96212ecff217 | 328 | |
Meli | 2:c4dc480057f6 | 329 | while(button2==0) // cuando el boton 2 esta presionado |
Meli | 0:96212ecff217 | 330 | { |
Meli | 0:96212ecff217 | 331 | |
Meli | 0:96212ecff217 | 332 | i=1; |
Meli | 0:96212ecff217 | 333 | wait (0.5); |
Meli | 0:96212ecff217 | 334 | |
Meli | 0:96212ecff217 | 335 | if ((marc==2)&(i==1)) |
Meli | 0:96212ecff217 | 336 | { |
Meli | 0:96212ecff217 | 337 | constante = constante-100; |
Meli | 0:96212ecff217 | 338 | if (constante<=0) |
Meli | 0:96212ecff217 | 339 | { |
Meli | 0:96212ecff217 | 340 | constante = 0; |
Meli | 0:96212ecff217 | 341 | } |
Meli | 0:96212ecff217 | 342 | |
Meli | 0:96212ecff217 | 343 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 344 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 345 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 346 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 347 | i=0; |
Meli | 0:96212ecff217 | 348 | |
Meli | 0:96212ecff217 | 349 | } |
Meli | 0:96212ecff217 | 350 | if ((marc==1)&(i==1)) |
Meli | 0:96212ecff217 | 351 | { |
Meli | 0:96212ecff217 | 352 | constante=constante-10; |
Meli | 0:96212ecff217 | 353 | if(constante%100==0){marc=2;} |
Meli | 0:96212ecff217 | 354 | if (constante<=0) |
Meli | 0:96212ecff217 | 355 | { |
Meli | 0:96212ecff217 | 356 | constante = 0; |
Meli | 0:96212ecff217 | 357 | } |
Meli | 0:96212ecff217 | 358 | |
Meli | 0:96212ecff217 | 359 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 360 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 361 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 362 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 363 | i=0; } |
Meli | 0:96212ecff217 | 364 | |
Meli | 0:96212ecff217 | 365 | if ((marc==0)&(i==1)) |
Meli | 0:96212ecff217 | 366 | { |
Meli | 0:96212ecff217 | 367 | --constante; |
Meli | 0:96212ecff217 | 368 | if(constante%10==0){marc=1;} |
Meli | 0:96212ecff217 | 369 | if (constante<=0) |
Meli | 0:96212ecff217 | 370 | { |
Meli | 0:96212ecff217 | 371 | constante = 0; |
Meli | 0:96212ecff217 | 372 | } |
Meli | 0:96212ecff217 | 373 | |
Meli | 0:96212ecff217 | 374 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 375 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 376 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 377 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 378 | i=0; } |
Meli | 0:96212ecff217 | 379 | |
Meli | 0:96212ecff217 | 380 | |
Meli | 0:96212ecff217 | 381 | |
Meli | 0:96212ecff217 | 382 | } |
Meli | 0:96212ecff217 | 383 | |
Meli | 0:96212ecff217 | 384 | marc=0; |
Meli | 0:96212ecff217 | 385 | return constante; |
Meli | 0:96212ecff217 | 386 | }; |