El programa funciona de la siguiente manera, las teclas A, B, C, D, * y # se ulizarán como funciones del teclado matricial para la perfecta ubicación de parámetros, estos se ingresarán en forma de cadena y luego se transformarán a al numero ingresado en los diferentes datos de la cadena.

Dependencies:   FPointer TextLCDlib mbed

Fork of keypad by HM Yoong

/media/uploads/caaruizze/2013-12-07_06.26.52.jpg /media/uploads/caaruizze/2013-12-07_06.25.56.jpg /media/uploads/caaruizze/2013-12-07_06.27.04.jpg

Committer:
caaruizze
Date:
Sat Dec 07 11:31:27 2013 +0000
Revision:
10:66b580afa3ea
Programa para ingresar par?mentros a un controlador PID por medio de un teclado matricial 4x4 y controlar el voltaje en una planta de primer grado simulada por un capacitor de  33uF y una resistencia de 39K

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caaruizze 10:66b580afa3ea 1 #include "mbed.h"
caaruizze 10:66b580afa3ea 2 #include "keypad.h"
caaruizze 10:66b580afa3ea 3 #include "TextLCD.h"
caaruizze 10:66b580afa3ea 4
caaruizze 10:66b580afa3ea 5 //Utilizar funciones del teclado
caaruizze 10:66b580afa3ea 6 #define KEYLEN 4 //tamaño del vector
caaruizze 10:66b580afa3ea 7 #define ENDKEY 15//Guardar datos < que 3 cifras
caaruizze 10:66b580afa3ea 8 #define BORKEY 7//Borrar datos
caaruizze 10:66b580afa3ea 9 #define PASKEY 12//Pasar de parametro
caaruizze 10:66b580afa3ea 10 #define MENKEY 14//Guardar datos
caaruizze 10:66b580afa3ea 11 //Se guardan los aprametros como una cadena de datos para luego convertirlos a un numero de 3 cifras
caaruizze 10:66b580afa3ea 12 char SP[KEYLEN];
caaruizze 10:66b580afa3ea 13 char KP[KEYLEN];
caaruizze 10:66b580afa3ea 14 char KI[KEYLEN];
caaruizze 10:66b580afa3ea 15 char KD[KEYLEN];
caaruizze 10:66b580afa3ea 16 //Se definen las variables a utilizar
caaruizze 10:66b580afa3ea 17 int Index = 0;
caaruizze 10:66b580afa3ea 18 int p=0;
caaruizze 10:66b580afa3ea 19 int i=0;
caaruizze 10:66b580afa3ea 20 int c=1;
caaruizze 10:66b580afa3ea 21 int sp=0;
caaruizze 10:66b580afa3ea 22 int kp=0;
caaruizze 10:66b580afa3ea 23 int ki=0;
caaruizze 10:66b580afa3ea 24 int kd=0;
caaruizze 10:66b580afa3ea 25
caaruizze 10:66b580afa3ea 26 //Se DEclara los puertos de la pantalla LCD
caaruizze 10:66b580afa3ea 27 TextLCD lcd(PTB10,PTB11,PTE2,PTE3,PTE4,PTE5);
caaruizze 10:66b580afa3ea 28 // Se Declaran los puertos PTC2 PTE30
caaruizze 10:66b580afa3ea 29 AnalogIn me(PTC2);
caaruizze 10:66b580afa3ea 30 AnalogOut co(PTE30);
caaruizze 10:66b580afa3ea 31
caaruizze 10:66b580afa3ea 32
caaruizze 10:66b580afa3ea 33 // se declara el teclado y el arreglo
caaruizze 10:66b580afa3ea 34 int teclado[] = { 1,2,3,0,
caaruizze 10:66b580afa3ea 35 4,5,6,0,
caaruizze 10:66b580afa3ea 36 7,8,9,0,
caaruizze 10:66b580afa3ea 37 0,0,0,0};
caaruizze 10:66b580afa3ea 38
caaruizze 10:66b580afa3ea 39
caaruizze 10:66b580afa3ea 40 //Comienza programa:
caaruizze 10:66b580afa3ea 41 uint32_t cbAfterInput(uint32_t tecla) {
caaruizze 10:66b580afa3ea 42 bool finish = false;
caaruizze 10:66b580afa3ea 43
caaruizze 10:66b580afa3ea 44
caaruizze 10:66b580afa3ea 45 if (Index==0){
caaruizze 10:66b580afa3ea 46 if (tecla==PASKEY){
caaruizze 10:66b580afa3ea 47 p++;
caaruizze 10:66b580afa3ea 48
caaruizze 10:66b580afa3ea 49 if (p==0){
caaruizze 10:66b580afa3ea 50 lcd.locate(2,0);
caaruizze 10:66b580afa3ea 51 lcd.printf(":");
caaruizze 10:66b580afa3ea 52 }
caaruizze 10:66b580afa3ea 53 if (p==1){
caaruizze 10:66b580afa3ea 54 lcd.locate(10,0);
caaruizze 10:66b580afa3ea 55 lcd.printf(":");
caaruizze 10:66b580afa3ea 56
caaruizze 10:66b580afa3ea 57 }
caaruizze 10:66b580afa3ea 58 if (p==2){
caaruizze 10:66b580afa3ea 59 lcd.locate(2,1);
caaruizze 10:66b580afa3ea 60 lcd.printf(":");
caaruizze 10:66b580afa3ea 61 }
caaruizze 10:66b580afa3ea 62 if (p==3){
caaruizze 10:66b580afa3ea 63 lcd.locate(10,1);
caaruizze 10:66b580afa3ea 64 lcd.printf(":");
caaruizze 10:66b580afa3ea 65 }
caaruizze 10:66b580afa3ea 66 if (p==4){
caaruizze 10:66b580afa3ea 67 lcd.locate(2,0);
caaruizze 10:66b580afa3ea 68 lcd.printf(":");
caaruizze 10:66b580afa3ea 69 p=0;
caaruizze 10:66b580afa3ea 70 }
caaruizze 10:66b580afa3ea 71
caaruizze 10:66b580afa3ea 72
caaruizze 10:66b580afa3ea 73 }
caaruizze 10:66b580afa3ea 74 }
caaruizze 10:66b580afa3ea 75
caaruizze 10:66b580afa3ea 76 if(p==0){
caaruizze 10:66b580afa3ea 77
caaruizze 10:66b580afa3ea 78
caaruizze 10:66b580afa3ea 79 if (Index < KEYLEN - 1)
caaruizze 10:66b580afa3ea 80 {
caaruizze 10:66b580afa3ea 81 if ((tecla != ENDKEY) & (tecla != BORKEY) & (tecla != PASKEY)){
caaruizze 10:66b580afa3ea 82 SP[Index] = teclado[tecla];
caaruizze 10:66b580afa3ea 83 Index++;
caaruizze 10:66b580afa3ea 84 c--;
caaruizze 10:66b580afa3ea 85 if (c==0){
caaruizze 10:66b580afa3ea 86 lcd.locate(3,0);
caaruizze 10:66b580afa3ea 87 lcd.printf(" ");
caaruizze 10:66b580afa3ea 88 c=3;
caaruizze 10:66b580afa3ea 89 }
caaruizze 10:66b580afa3ea 90 lcd.locate(3+i,0);
caaruizze 10:66b580afa3ea 91 lcd.printf("%d",SP[i]);
caaruizze 10:66b580afa3ea 92 i++;
caaruizze 10:66b580afa3ea 93
caaruizze 10:66b580afa3ea 94 }
caaruizze 10:66b580afa3ea 95
caaruizze 10:66b580afa3ea 96 if (tecla == ENDKEY){
caaruizze 10:66b580afa3ea 97 finish = true;
caaruizze 10:66b580afa3ea 98 c=1;
caaruizze 10:66b580afa3ea 99 }
caaruizze 10:66b580afa3ea 100
caaruizze 10:66b580afa3ea 101 if (tecla == BORKEY){
caaruizze 10:66b580afa3ea 102 memset(&SP, 0, KEYLEN);
caaruizze 10:66b580afa3ea 103 Index = 0;
caaruizze 10:66b580afa3ea 104 i=0;
caaruizze 10:66b580afa3ea 105 lcd.locate(3,0);
caaruizze 10:66b580afa3ea 106 lcd.printf(" ");
caaruizze 10:66b580afa3ea 107 c=1;
caaruizze 10:66b580afa3ea 108 lcd.locate(2,0);
caaruizze 10:66b580afa3ea 109 lcd.printf("=");
caaruizze 10:66b580afa3ea 110 }
caaruizze 10:66b580afa3ea 111
caaruizze 10:66b580afa3ea 112 }
caaruizze 10:66b580afa3ea 113
caaruizze 10:66b580afa3ea 114 if (finish || (Index == KEYLEN - 1)) {
caaruizze 10:66b580afa3ea 115 sp=0;
caaruizze 10:66b580afa3ea 116 if (i==3){
caaruizze 10:66b580afa3ea 117 sp=(100*SP[0])+(10*SP[1])+(SP[2]);
caaruizze 10:66b580afa3ea 118 }
caaruizze 10:66b580afa3ea 119 if (i==2){
caaruizze 10:66b580afa3ea 120 sp=(10*SP[0])+(1*SP[1]);
caaruizze 10:66b580afa3ea 121 }
caaruizze 10:66b580afa3ea 122 if (i==1){
caaruizze 10:66b580afa3ea 123 sp=SP[0];
caaruizze 10:66b580afa3ea 124 }
caaruizze 10:66b580afa3ea 125 lcd.locate(3,0);
caaruizze 10:66b580afa3ea 126 lcd.printf(" ");
caaruizze 10:66b580afa3ea 127
caaruizze 10:66b580afa3ea 128 lcd.locate(3,0);
caaruizze 10:66b580afa3ea 129 lcd.printf("%d",sp);
caaruizze 10:66b580afa3ea 130 memset(&SP, 0, KEYLEN);
caaruizze 10:66b580afa3ea 131 Index = 0;
caaruizze 10:66b580afa3ea 132 i=0;
caaruizze 10:66b580afa3ea 133
caaruizze 10:66b580afa3ea 134 }
caaruizze 10:66b580afa3ea 135 }
caaruizze 10:66b580afa3ea 136
caaruizze 10:66b580afa3ea 137 if(p==1){
caaruizze 10:66b580afa3ea 138
caaruizze 10:66b580afa3ea 139
caaruizze 10:66b580afa3ea 140
caaruizze 10:66b580afa3ea 141 if (Index < KEYLEN - 1)
caaruizze 10:66b580afa3ea 142 {
caaruizze 10:66b580afa3ea 143 if ((tecla != ENDKEY) & (tecla != BORKEY) & (tecla != PASKEY)){
caaruizze 10:66b580afa3ea 144 KP[Index] = teclado[tecla];
caaruizze 10:66b580afa3ea 145 Index++;
caaruizze 10:66b580afa3ea 146 c--;
caaruizze 10:66b580afa3ea 147 if (c==0){
caaruizze 10:66b580afa3ea 148 lcd.locate(11,0);
caaruizze 10:66b580afa3ea 149 lcd.printf(" ");
caaruizze 10:66b580afa3ea 150 c=3;
caaruizze 10:66b580afa3ea 151 }
caaruizze 10:66b580afa3ea 152 lcd.locate(11+i,0);
caaruizze 10:66b580afa3ea 153 lcd.printf("%d",KP[i]);
caaruizze 10:66b580afa3ea 154 i++;
caaruizze 10:66b580afa3ea 155
caaruizze 10:66b580afa3ea 156 }
caaruizze 10:66b580afa3ea 157
caaruizze 10:66b580afa3ea 158 if (tecla == ENDKEY){
caaruizze 10:66b580afa3ea 159 finish = true;
caaruizze 10:66b580afa3ea 160 c=1;
caaruizze 10:66b580afa3ea 161 }
caaruizze 10:66b580afa3ea 162
caaruizze 10:66b580afa3ea 163 if (tecla == BORKEY){
caaruizze 10:66b580afa3ea 164 memset(&KP, 0, KEYLEN);
caaruizze 10:66b580afa3ea 165 Index = 0;
caaruizze 10:66b580afa3ea 166 i=0;
caaruizze 10:66b580afa3ea 167 lcd.locate(11,0);
caaruizze 10:66b580afa3ea 168 lcd.printf(" ");
caaruizze 10:66b580afa3ea 169 c=1;
caaruizze 10:66b580afa3ea 170 lcd.locate(10,0);
caaruizze 10:66b580afa3ea 171 lcd.printf("=");
caaruizze 10:66b580afa3ea 172 }
caaruizze 10:66b580afa3ea 173
caaruizze 10:66b580afa3ea 174 }
caaruizze 10:66b580afa3ea 175
caaruizze 10:66b580afa3ea 176 if (finish || (Index == KEYLEN - 1)) {
caaruizze 10:66b580afa3ea 177 kp=0;
caaruizze 10:66b580afa3ea 178 if (i==3){
caaruizze 10:66b580afa3ea 179 kp=(100*KP[0])+(10*KP[1])+(KP[2]);
caaruizze 10:66b580afa3ea 180 }
caaruizze 10:66b580afa3ea 181 if (i==2){
caaruizze 10:66b580afa3ea 182 kp=(10*KP[0])+(1*KP[1]);
caaruizze 10:66b580afa3ea 183 }
caaruizze 10:66b580afa3ea 184 if (i==1){
caaruizze 10:66b580afa3ea 185 kp=KP[0];
caaruizze 10:66b580afa3ea 186 }
caaruizze 10:66b580afa3ea 187 lcd.locate(11,0);
caaruizze 10:66b580afa3ea 188 lcd.printf(" ");
caaruizze 10:66b580afa3ea 189
caaruizze 10:66b580afa3ea 190 lcd.locate(11,0);
caaruizze 10:66b580afa3ea 191 lcd.printf("%d",kp);
caaruizze 10:66b580afa3ea 192 memset(&KP, 0, KEYLEN);
caaruizze 10:66b580afa3ea 193 Index = 0;
caaruizze 10:66b580afa3ea 194 i=0;
caaruizze 10:66b580afa3ea 195
caaruizze 10:66b580afa3ea 196 }
caaruizze 10:66b580afa3ea 197 }
caaruizze 10:66b580afa3ea 198 if(p==2){
caaruizze 10:66b580afa3ea 199
caaruizze 10:66b580afa3ea 200
caaruizze 10:66b580afa3ea 201
caaruizze 10:66b580afa3ea 202 if (Index < KEYLEN - 1)
caaruizze 10:66b580afa3ea 203 {
caaruizze 10:66b580afa3ea 204 if ((tecla != ENDKEY) & (tecla != BORKEY) & (tecla != PASKEY)){
caaruizze 10:66b580afa3ea 205 KI[Index] = teclado[tecla];
caaruizze 10:66b580afa3ea 206 Index++;
caaruizze 10:66b580afa3ea 207 c--;
caaruizze 10:66b580afa3ea 208 if (c==0){
caaruizze 10:66b580afa3ea 209 lcd.locate(3,1);
caaruizze 10:66b580afa3ea 210 lcd.printf(" ");
caaruizze 10:66b580afa3ea 211 c=3;
caaruizze 10:66b580afa3ea 212 }
caaruizze 10:66b580afa3ea 213 lcd.locate(3+i,1);
caaruizze 10:66b580afa3ea 214 lcd.printf("%d",KI[i]);
caaruizze 10:66b580afa3ea 215 i++;
caaruizze 10:66b580afa3ea 216
caaruizze 10:66b580afa3ea 217 }
caaruizze 10:66b580afa3ea 218
caaruizze 10:66b580afa3ea 219 if (tecla == ENDKEY){
caaruizze 10:66b580afa3ea 220 finish = true;
caaruizze 10:66b580afa3ea 221 c=1;
caaruizze 10:66b580afa3ea 222 }
caaruizze 10:66b580afa3ea 223
caaruizze 10:66b580afa3ea 224 if (tecla == BORKEY){
caaruizze 10:66b580afa3ea 225 memset(&KI, 0, KEYLEN);
caaruizze 10:66b580afa3ea 226 Index = 0;
caaruizze 10:66b580afa3ea 227 i=0;
caaruizze 10:66b580afa3ea 228 lcd.locate(3,1);
caaruizze 10:66b580afa3ea 229 lcd.printf(" ");
caaruizze 10:66b580afa3ea 230 c=1;
caaruizze 10:66b580afa3ea 231 lcd.locate(2,1);
caaruizze 10:66b580afa3ea 232 lcd.printf("=");
caaruizze 10:66b580afa3ea 233 }
caaruizze 10:66b580afa3ea 234
caaruizze 10:66b580afa3ea 235 }
caaruizze 10:66b580afa3ea 236
caaruizze 10:66b580afa3ea 237 if (finish || (Index == KEYLEN - 1)) {
caaruizze 10:66b580afa3ea 238 ki=0;
caaruizze 10:66b580afa3ea 239 if (i==3){
caaruizze 10:66b580afa3ea 240 ki=(100*KI[0])+(10*KI[1])+(KI[2]);
caaruizze 10:66b580afa3ea 241 }
caaruizze 10:66b580afa3ea 242 if (i==2){
caaruizze 10:66b580afa3ea 243 ki=(10*KI[0])+(1*KI[1]);
caaruizze 10:66b580afa3ea 244 }
caaruizze 10:66b580afa3ea 245 if (i==1){
caaruizze 10:66b580afa3ea 246 ki=KI[0];
caaruizze 10:66b580afa3ea 247 }
caaruizze 10:66b580afa3ea 248 lcd.locate(3,1);
caaruizze 10:66b580afa3ea 249 lcd.printf(" ");
caaruizze 10:66b580afa3ea 250
caaruizze 10:66b580afa3ea 251 lcd.locate(3,1);
caaruizze 10:66b580afa3ea 252 lcd.printf("%d",ki);
caaruizze 10:66b580afa3ea 253 memset(&KI, 0, KEYLEN);
caaruizze 10:66b580afa3ea 254 Index = 0;
caaruizze 10:66b580afa3ea 255 i=0;
caaruizze 10:66b580afa3ea 256
caaruizze 10:66b580afa3ea 257 }
caaruizze 10:66b580afa3ea 258 }
caaruizze 10:66b580afa3ea 259
caaruizze 10:66b580afa3ea 260 if(p==3){
caaruizze 10:66b580afa3ea 261
caaruizze 10:66b580afa3ea 262
caaruizze 10:66b580afa3ea 263 if (Index < KEYLEN - 1)
caaruizze 10:66b580afa3ea 264 {
caaruizze 10:66b580afa3ea 265 if ((tecla != ENDKEY) & (tecla != BORKEY) & (tecla != PASKEY)){
caaruizze 10:66b580afa3ea 266 KD[Index] = teclado[tecla];
caaruizze 10:66b580afa3ea 267 Index++;
caaruizze 10:66b580afa3ea 268 c--;
caaruizze 10:66b580afa3ea 269 if (c==0){
caaruizze 10:66b580afa3ea 270 lcd.locate(11,1);
caaruizze 10:66b580afa3ea 271 lcd.printf(" ");
caaruizze 10:66b580afa3ea 272 c=3;
caaruizze 10:66b580afa3ea 273 }
caaruizze 10:66b580afa3ea 274 lcd.locate(11+i,1);
caaruizze 10:66b580afa3ea 275 lcd.printf("%d",KD[i]);
caaruizze 10:66b580afa3ea 276 i++;
caaruizze 10:66b580afa3ea 277
caaruizze 10:66b580afa3ea 278 }
caaruizze 10:66b580afa3ea 279
caaruizze 10:66b580afa3ea 280 if (tecla == ENDKEY){
caaruizze 10:66b580afa3ea 281 finish = true;
caaruizze 10:66b580afa3ea 282 c=1;
caaruizze 10:66b580afa3ea 283 }
caaruizze 10:66b580afa3ea 284
caaruizze 10:66b580afa3ea 285 if (tecla == BORKEY){
caaruizze 10:66b580afa3ea 286 memset(&KD, 0, KEYLEN);
caaruizze 10:66b580afa3ea 287 Index = 0;
caaruizze 10:66b580afa3ea 288 i=0;
caaruizze 10:66b580afa3ea 289 lcd.locate(11,1);
caaruizze 10:66b580afa3ea 290 lcd.printf(" ");
caaruizze 10:66b580afa3ea 291 c=1;
caaruizze 10:66b580afa3ea 292 lcd.locate(10,1);
caaruizze 10:66b580afa3ea 293 lcd.printf("=");
caaruizze 10:66b580afa3ea 294 }
caaruizze 10:66b580afa3ea 295
caaruizze 10:66b580afa3ea 296 }
caaruizze 10:66b580afa3ea 297
caaruizze 10:66b580afa3ea 298 if (finish || (Index == KEYLEN - 1)) {
caaruizze 10:66b580afa3ea 299 kd=0;
caaruizze 10:66b580afa3ea 300 if (i==3){
caaruizze 10:66b580afa3ea 301 kd=(100*KD[0])+(10*KD[1])+(KD[2]);
caaruizze 10:66b580afa3ea 302 }
caaruizze 10:66b580afa3ea 303 if (i==2){
caaruizze 10:66b580afa3ea 304 kd=(10*KD[0])+(1*KD[1]);
caaruizze 10:66b580afa3ea 305 }
caaruizze 10:66b580afa3ea 306 if (i==1){
caaruizze 10:66b580afa3ea 307 kd=KD[0];
caaruizze 10:66b580afa3ea 308 }
caaruizze 10:66b580afa3ea 309 lcd.locate(11,1);
caaruizze 10:66b580afa3ea 310 lcd.printf(" ");
caaruizze 10:66b580afa3ea 311
caaruizze 10:66b580afa3ea 312 lcd.locate(11,1);
caaruizze 10:66b580afa3ea 313 lcd.printf("%d",kd);
caaruizze 10:66b580afa3ea 314 memset(&KD, 0, KEYLEN);
caaruizze 10:66b580afa3ea 315 Index = 0;
caaruizze 10:66b580afa3ea 316 i=0;
caaruizze 10:66b580afa3ea 317
caaruizze 10:66b580afa3ea 318 }
caaruizze 10:66b580afa3ea 319 }
caaruizze 10:66b580afa3ea 320
caaruizze 10:66b580afa3ea 321 if(tecla==MENKEY){//inicia control PID:
caaruizze 10:66b580afa3ea 322
caaruizze 10:66b580afa3ea 323 float med,err,Sp,ap,ai,ad,PID,err_v,sal;
caaruizze 10:66b580afa3ea 324 med=err=Sp=ap=ai=ad=PID=err_v=sal=0;
caaruizze 10:66b580afa3ea 325
caaruizze 10:66b580afa3ea 326 int k=0;
caaruizze 10:66b580afa3ea 327 lcd.cls();
caaruizze 10:66b580afa3ea 328 lcd.locate(3,0);
caaruizze 10:66b580afa3ea 329 lcd.printf("Guardado!!");
caaruizze 10:66b580afa3ea 330 wait(2);
caaruizze 10:66b580afa3ea 331 lcd.cls();
caaruizze 10:66b580afa3ea 332 lcd.locate(0,0);
caaruizze 10:66b580afa3ea 333 lcd.printf("Er=%.2f",err);
caaruizze 10:66b580afa3ea 334 lcd.locate(8,0);
caaruizze 10:66b580afa3ea 335 lcd.printf("Me=%.2f",med);
caaruizze 10:66b580afa3ea 336 lcd.locate(0,1);
caaruizze 10:66b580afa3ea 337 lcd.printf("Sp=0.00");
caaruizze 10:66b580afa3ea 338 lcd.locate(8,1);
caaruizze 10:66b580afa3ea 339 lcd.printf("AC=%.2f",PID);
caaruizze 10:66b580afa3ea 340
caaruizze 10:66b580afa3ea 341
caaruizze 10:66b580afa3ea 342
caaruizze 10:66b580afa3ea 343 while (1){
caaruizze 10:66b580afa3ea 344 wait(0.001);
caaruizze 10:66b580afa3ea 345 k++;
caaruizze 10:66b580afa3ea 346 med=me*3.3;
caaruizze 10:66b580afa3ea 347 Sp=(3.3/999)*sp;
caaruizze 10:66b580afa3ea 348 err=Sp-med;
caaruizze 10:66b580afa3ea 349 ap=kp*err;
caaruizze 10:66b580afa3ea 350 ai=(ki*err)+ai;
caaruizze 10:66b580afa3ea 351 if(ai>999){
caaruizze 10:66b580afa3ea 352 ai=999;
caaruizze 10:66b580afa3ea 353 }
caaruizze 10:66b580afa3ea 354 ad=kd*(err-err_v);
caaruizze 10:66b580afa3ea 355 PID=ap+ai+ad;
caaruizze 10:66b580afa3ea 356
caaruizze 10:66b580afa3ea 357 if (PID<0){
caaruizze 10:66b580afa3ea 358 PID=0;
caaruizze 10:66b580afa3ea 359 }
caaruizze 10:66b580afa3ea 360 if (PID>999){
caaruizze 10:66b580afa3ea 361 PID=999;
caaruizze 10:66b580afa3ea 362 }
caaruizze 10:66b580afa3ea 363 co=(PID/999);
caaruizze 10:66b580afa3ea 364 sal=co*3.3;
caaruizze 10:66b580afa3ea 365 err_v=err;
caaruizze 10:66b580afa3ea 366
caaruizze 10:66b580afa3ea 367
caaruizze 10:66b580afa3ea 368 if(k>100){
caaruizze 10:66b580afa3ea 369
caaruizze 10:66b580afa3ea 370 lcd.locate(3,0);
caaruizze 10:66b580afa3ea 371 lcd.printf(" ");
caaruizze 10:66b580afa3ea 372 lcd.locate(3,0);
caaruizze 10:66b580afa3ea 373 lcd.printf("%.2f",err);
caaruizze 10:66b580afa3ea 374 lcd.locate(11,0);
caaruizze 10:66b580afa3ea 375 lcd.printf(" ");
caaruizze 10:66b580afa3ea 376 lcd.locate(11,0);
caaruizze 10:66b580afa3ea 377 lcd.printf("%.2f",med);
caaruizze 10:66b580afa3ea 378 lcd.locate(11,1);
caaruizze 10:66b580afa3ea 379 lcd.printf(" ");
caaruizze 10:66b580afa3ea 380 lcd.locate(11,1);
caaruizze 10:66b580afa3ea 381 lcd.printf("%.2f",sal);
caaruizze 10:66b580afa3ea 382 lcd.locate(3,1);
caaruizze 10:66b580afa3ea 383 lcd.printf("%.2f",Sp);
caaruizze 10:66b580afa3ea 384 k=0;
caaruizze 10:66b580afa3ea 385 }
caaruizze 10:66b580afa3ea 386
caaruizze 10:66b580afa3ea 387 }//while
caaruizze 10:66b580afa3ea 388
caaruizze 10:66b580afa3ea 389 }
caaruizze 10:66b580afa3ea 390
caaruizze 10:66b580afa3ea 391
caaruizze 10:66b580afa3ea 392
caaruizze 10:66b580afa3ea 393
caaruizze 10:66b580afa3ea 394
caaruizze 10:66b580afa3ea 395 return 0;
caaruizze 10:66b580afa3ea 396 }
caaruizze 10:66b580afa3ea 397
caaruizze 10:66b580afa3ea 398
caaruizze 10:66b580afa3ea 399 int main() {
caaruizze 10:66b580afa3ea 400 //Se elimina el bufer de los vectores
caaruizze 10:66b580afa3ea 401 memset(&SP, 0, KEYLEN);
caaruizze 10:66b580afa3ea 402 memset(&KP, 0, KEYLEN);
caaruizze 10:66b580afa3ea 403 memset(&KI, 0, KEYLEN);
caaruizze 10:66b580afa3ea 404 memset(&KD, 0, KEYLEN);
caaruizze 10:66b580afa3ea 405 /***********************************************/
caaruizze 10:66b580afa3ea 406 Index = 0;
caaruizze 10:66b580afa3ea 407 Keypad keypad(PTA2,PTD4,PTD3,PTD1,PTA13,PTD5,PTD0,PTD2);
caaruizze 10:66b580afa3ea 408 keypad.CallAfterInput(&cbAfterInput);
caaruizze 10:66b580afa3ea 409 keypad.Start();
caaruizze 10:66b580afa3ea 410 lcd.writeCommand(0x0e);
caaruizze 10:66b580afa3ea 411 lcd.locate(0,0);
caaruizze 10:66b580afa3ea 412 lcd.printf("Sp:0");
caaruizze 10:66b580afa3ea 413 lcd.locate(8,0);
caaruizze 10:66b580afa3ea 414 lcd.printf("Kp:0");
caaruizze 10:66b580afa3ea 415 lcd.locate(0,1);
caaruizze 10:66b580afa3ea 416 lcd.printf("Ki:0");
caaruizze 10:66b580afa3ea 417 lcd.locate(8,1);
caaruizze 10:66b580afa3ea 418 lcd.printf("Kd:0");
caaruizze 10:66b580afa3ea 419 while (1) {
caaruizze 10:66b580afa3ea 420
caaruizze 10:66b580afa3ea 421
caaruizze 10:66b580afa3ea 422 wait(0.5);
caaruizze 10:66b580afa3ea 423
caaruizze 10:66b580afa3ea 424 }
caaruizze 10:66b580afa3ea 425
caaruizze 10:66b580afa3ea 426 }