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