![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Trabajo en el cual se realiza un PID, con los valores ingresados por medio de pulsadores, que son finalmente mostrados con el resultado en un lcd
Dependencies: Debounced TextLCD mbed
Fork of PID_con_pulsadores by
main.cpp@3:b248a19548db, 2015-11-23 (annotated)
- Committer:
- GermanD
- Date:
- Mon Nov 23 23:56:23 2015 +0000
- Revision:
- 3:b248a19548db
- Parent:
- 2:c4dc480057f6
Trabajo, para la creaci?n de PID, el cual se pueda modificar por pulsadores, y muestre tanto las variables y su resultado en un lcd
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 | |
GermanD | 3:b248a19548db | 38 | if (button1.falling())//se tiene en cuenta es el flanco de caida (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 | { |
GermanD | 3:b248a19548db | 44 | ++sp; //incrementa de a uno |
GermanD | 3:b248a19548db | 45 | if (sp>=5) // el mayor valor que toma sp es 5 |
Meli | 0:96212ecff217 | 46 | {sp=5; |
Meli | 0:96212ecff217 | 47 | } |
Meli | 0:96212ecff217 | 48 | lcd.locate(3,0); |
GermanD | 3:b248a19548db | 49 | lcd.printf(" "); //borra el valor anterior |
Meli | 0:96212ecff217 | 50 | lcd.locate(3,0); |
Meli | 0:96212ecff217 | 51 | lcd.printf("%d", sp);//decimal |
GermanD | 3:b248a19548db | 52 | wait (0.5); // para evitar que el programa crea que se dejó pulsado 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 | } |
GermanD | 3:b248a19548db | 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 | { |
GermanD | 3:b248a19548db | 105 | if (sp==0) // no mostrar nada |
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); |
GermanD | 3:b248a19548db | 116 | |
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); |
GermanD | 3:b248a19548db | 128 | lcd.printf(" "); // borra lo que habia antes |
Meli | 0:96212ecff217 | 129 | lcd.locate(11,0); |
GermanD | 3:b248a19548db | 130 | lcd.printf("%d", kp); // imprime el valor de kp |
Meli | 0:96212ecff217 | 131 | wait(0.5); |
GermanD | 3:b248a19548db | 132 | |
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); |
GermanD | 3:b248a19548db | 144 | lcd.printf(" "); // borra el vlalor que habia |
Meli | 0:96212ecff217 | 145 | lcd.locate(3,1); |
GermanD | 3:b248a19548db | 146 | lcd.printf("%d", ki);//pone el calor de ki |
Meli | 0:96212ecff217 | 147 | wait(0.5); |
GermanD | 3:b248a19548db | 148 | |
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); |
GermanD | 3:b248a19548db | 164 | |
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 | { |
GermanD | 3:b248a19548db | 215 | lcd.cls(); //se borra la pantalla |
GermanD | 3:b248a19548db | 216 | |
Meli | 0:96212ecff217 | 217 | while(bandera==0) |
Meli | 0:96212ecff217 | 218 | { |
Meli | 0:96212ecff217 | 219 | wait(0.2); |
GermanD | 3:b248a19548db | 220 | x=Vout.read(); // lee el voltaje de salida en porcentaje |
Meli | 2:c4dc480057f6 | 221 | |
Meli | 0:96212ecff217 | 222 | //} |
Meli | 0:96212ecff217 | 223 | //pid |
Meli | 0:96212ecff217 | 224 | error = sp-x; // Calcula el error |
Meli | 0:96212ecff217 | 225 | pwmset = kp* error+ki * eInteg +kd* (error - ePrev); // ecuacion para el PID |
GermanD | 3:b248a19548db | 226 | pwmset=(0.976801/5)*pwmset; // se pasa de porcentaje al respectivo valor de salida |
Meli | 0:96212ecff217 | 227 | Vout=pwmset; |
GermanD | 3:b248a19548db | 228 | eInteg =eInteg+ error; // integra |
Meli | 0:96212ecff217 | 229 | ePrev = error; |
Meli | 0:96212ecff217 | 230 | lcd.locate(0,1); |
Meli | 0:96212ecff217 | 231 | lcd.printf("error=%f",error); |
Meli | 0:96212ecff217 | 232 | lcd.locate(1,0); |
Meli | 0:96212ecff217 | 233 | lcd.printf("salida=%f",x); |
Meli | 0:96212ecff217 | 234 | if (button4.falling()) |
Meli | 0:96212ecff217 | 235 | { bandera=1; |
Meli | 0:96212ecff217 | 236 | lcd.cls(); |
Meli | 0:96212ecff217 | 237 | p=1; |
Meli | 0:96212ecff217 | 238 | lcd.locate(8,0); |
Meli | 0:96212ecff217 | 239 | lcd.printf("kp=%d",kp); |
Meli | 0:96212ecff217 | 240 | lcd.locate(0,1); |
Meli | 0:96212ecff217 | 241 | lcd.printf("Ki=%d", ki); |
Meli | 0:96212ecff217 | 242 | lcd.locate(8,1); |
Meli | 0:96212ecff217 | 243 | lcd.printf("Kd=%d", kd); |
Meli | 0:96212ecff217 | 244 | lcd.locate(0,0); |
Meli | 0:96212ecff217 | 245 | lcd.printf("Sp=%d", sp); |
Meli | 0:96212ecff217 | 246 | |
Meli | 0:96212ecff217 | 247 | } |
Meli | 0:96212ecff217 | 248 | |
Meli | 0:96212ecff217 | 249 | |
Meli | 0:96212ecff217 | 250 | } |
Meli | 0:96212ecff217 | 251 | bandera = 0; |
Meli | 0:96212ecff217 | 252 | } |
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 | int presionado_incremento(int columna,int fila,int constante) |
Meli | 0:96212ecff217 | 261 | { |
Meli | 0:96212ecff217 | 262 | int marc=0,i=0; |
Meli | 0:96212ecff217 | 263 | |
GermanD | 3:b248a19548db | 264 | while(button1==0) // mientras el boton 1 esta presionado |
Meli | 0:96212ecff217 | 265 | { |
Meli | 0:96212ecff217 | 266 | i=1; |
Meli | 0:96212ecff217 | 267 | wait (0.5); |
Meli | 0:96212ecff217 | 268 | |
Meli | 0:96212ecff217 | 269 | |
Meli | 0:96212ecff217 | 270 | if ((marc==2)&(i==1)) // entra cuando el modulo de la constante dividido 100 y el residuo es 0 |
Meli | 0:96212ecff217 | 271 | { |
Meli | 0:96212ecff217 | 272 | constante = constante+100; |
Meli | 0:96212ecff217 | 273 | if (constante>=999) |
Meli | 0:96212ecff217 | 274 | { |
Meli | 0:96212ecff217 | 275 | constante = 999; |
Meli | 0:96212ecff217 | 276 | } |
Meli | 0:96212ecff217 | 277 | |
Meli | 0:96212ecff217 | 278 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 279 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 280 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 281 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 282 | i=0; |
Meli | 0:96212ecff217 | 283 | |
Meli | 0:96212ecff217 | 284 | } |
Meli | 0:96212ecff217 | 285 | if ((marc==1)&(i==1)) |
Meli | 0:96212ecff217 | 286 | { |
Meli | 0:96212ecff217 | 287 | constante=constante+10; |
Meli | 0:96212ecff217 | 288 | if(constante%100==0){marc=2;} // si el residuo de la constante dividido 100, la bandera es igual a dos |
Meli | 0:96212ecff217 | 289 | if (constante>= 999) |
Meli | 0:96212ecff217 | 290 | { |
Meli | 0:96212ecff217 | 291 | constante = 999; |
Meli | 0:96212ecff217 | 292 | } |
Meli | 0:96212ecff217 | 293 | |
Meli | 0:96212ecff217 | 294 | |
Meli | 0:96212ecff217 | 295 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 296 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 297 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 298 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 299 | i=0; } |
Meli | 0:96212ecff217 | 300 | |
Meli | 0:96212ecff217 | 301 | if ((marc==0)&(i==1)) |
Meli | 0:96212ecff217 | 302 | { |
Meli | 0:96212ecff217 | 303 | ++constante; |
Meli | 0:96212ecff217 | 304 | if(constante%10==0){marc=1;} |
Meli | 0:96212ecff217 | 305 | if (constante>= 999) |
Meli | 0:96212ecff217 | 306 | { |
Meli | 0:96212ecff217 | 307 | constante = 999; |
Meli | 0:96212ecff217 | 308 | } |
Meli | 0:96212ecff217 | 309 | |
Meli | 0:96212ecff217 | 310 | |
Meli | 0:96212ecff217 | 311 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 312 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 313 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 314 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 315 | i=0; } |
Meli | 0:96212ecff217 | 316 | |
Meli | 0:96212ecff217 | 317 | |
Meli | 0:96212ecff217 | 318 | |
Meli | 0:96212ecff217 | 319 | } |
Meli | 0:96212ecff217 | 320 | marc=0; |
Meli | 0:96212ecff217 | 321 | return constante; |
Meli | 0:96212ecff217 | 322 | } |
Meli | 0:96212ecff217 | 323 | |
Meli | 0:96212ecff217 | 324 | int presionado_decremento(int columna,int fila,int constante) |
Meli | 0:96212ecff217 | 325 | { |
Meli | 0:96212ecff217 | 326 | int marc=0,i=0; |
Meli | 0:96212ecff217 | 327 | |
Meli | 2:c4dc480057f6 | 328 | while(button2==0) // cuando el boton 2 esta presionado |
Meli | 0:96212ecff217 | 329 | { |
Meli | 0:96212ecff217 | 330 | |
Meli | 0:96212ecff217 | 331 | i=1; |
Meli | 0:96212ecff217 | 332 | wait (0.5); |
Meli | 0:96212ecff217 | 333 | |
Meli | 0:96212ecff217 | 334 | if ((marc==2)&(i==1)) |
Meli | 0:96212ecff217 | 335 | { |
Meli | 0:96212ecff217 | 336 | constante = constante-100; |
Meli | 0:96212ecff217 | 337 | if (constante<=0) |
Meli | 0:96212ecff217 | 338 | { |
Meli | 0:96212ecff217 | 339 | constante = 0; |
Meli | 0:96212ecff217 | 340 | } |
Meli | 0:96212ecff217 | 341 | |
Meli | 0:96212ecff217 | 342 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 343 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 344 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 345 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 346 | i=0; |
Meli | 0:96212ecff217 | 347 | |
Meli | 0:96212ecff217 | 348 | } |
Meli | 0:96212ecff217 | 349 | if ((marc==1)&(i==1)) |
Meli | 0:96212ecff217 | 350 | { |
Meli | 0:96212ecff217 | 351 | constante=constante-10; |
Meli | 0:96212ecff217 | 352 | if(constante%100==0){marc=2;} |
Meli | 0:96212ecff217 | 353 | if (constante<=0) |
Meli | 0:96212ecff217 | 354 | { |
Meli | 0:96212ecff217 | 355 | constante = 0; |
Meli | 0:96212ecff217 | 356 | } |
Meli | 0:96212ecff217 | 357 | |
Meli | 0:96212ecff217 | 358 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 359 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 360 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 361 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 362 | i=0; } |
Meli | 0:96212ecff217 | 363 | |
Meli | 0:96212ecff217 | 364 | if ((marc==0)&(i==1)) |
Meli | 0:96212ecff217 | 365 | { |
Meli | 0:96212ecff217 | 366 | --constante; |
Meli | 0:96212ecff217 | 367 | if(constante%10==0){marc=1;} |
Meli | 0:96212ecff217 | 368 | if (constante<=0) |
Meli | 0:96212ecff217 | 369 | { |
Meli | 0:96212ecff217 | 370 | constante = 0; |
Meli | 0:96212ecff217 | 371 | } |
Meli | 0:96212ecff217 | 372 | |
Meli | 0:96212ecff217 | 373 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 374 | lcd.printf(" "); |
Meli | 0:96212ecff217 | 375 | lcd.locate(columna,fila); |
Meli | 0:96212ecff217 | 376 | lcd.printf("%d", constante); |
Meli | 0:96212ecff217 | 377 | i=0; } |
Meli | 0:96212ecff217 | 378 | |
Meli | 0:96212ecff217 | 379 | |
Meli | 0:96212ecff217 | 380 | |
Meli | 0:96212ecff217 | 381 | } |
Meli | 0:96212ecff217 | 382 | |
Meli | 0:96212ecff217 | 383 | marc=0; |
Meli | 0:96212ecff217 | 384 | return constante; |
Meli | 0:96212ecff217 | 385 | }; |