Parametros PID, Incremental (antirebote)

Dependencies:   Debounced TextLCD mbed

Fork of Tarea2 by Alexander Vallejo

Committer:
avallejopo
Date:
Fri Nov 15 17:06:50 2013 +0000
Revision:
1:d54f06e19277
Parent:
0:71c0bb945ae8
Parametros PID Incrementales

Who changed what in which revision?

UserRevisionLine numberNew contents of line
avallejopo 0:71c0bb945ae8 1 #include "mbed.h"
avallejopo 0:71c0bb945ae8 2 #include "DebouncedIn.h"
avallejopo 0:71c0bb945ae8 3 #include "TextLCD.h"
avallejopo 0:71c0bb945ae8 4
avallejopo 0:71c0bb945ae8 5 AnalogIn Vin(PTC2);
avallejopo 0:71c0bb945ae8 6 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
avallejopo 0:71c0bb945ae8 7
avallejopo 0:71c0bb945ae8 8 DigitalOut led1(LED1);
avallejopo 0:71c0bb945ae8 9 DigitalOut led2(LED2);
avallejopo 0:71c0bb945ae8 10 DigitalOut led3(LED3);
avallejopo 0:71c0bb945ae8 11 DigitalIn button1(PTC12);
avallejopo 0:71c0bb945ae8 12 DigitalIn button2(PTC13);
avallejopo 0:71c0bb945ae8 13 DigitalIn button3(PTC16);
avallejopo 0:71c0bb945ae8 14
avallejopo 0:71c0bb945ae8 15
avallejopo 0:71c0bb945ae8 16
avallejopo 0:71c0bb945ae8 17 int C1=0x0F;
avallejopo 0:71c0bb945ae8 18 int spnum=0,kinum=0,kpnum=0,kdnum=0,pos=1;
avallejopo 0:71c0bb945ae8 19 int incremento=1,flagt=0;
avallejopo 0:71c0bb945ae8 20 Timer t;
avallejopo 0:71c0bb945ae8 21
avallejopo 0:71c0bb945ae8 22 int main()
avallejopo 0:71c0bb945ae8 23 {
avallejopo 0:71c0bb945ae8 24 lcd.cls(); // Borrar Pantalla
avallejopo 0:71c0bb945ae8 25 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
avallejopo 1:d54f06e19277 26
avallejopo 1:d54f06e19277 27 lcd.locate(8,0);
avallejopo 1:d54f06e19277 28 lcd.printf("Kp=%d",kpnum);
avallejopo 1:d54f06e19277 29 lcd.locate(0,1);
avallejopo 1:d54f06e19277 30 lcd.printf("Ki=%d",kinum);
avallejopo 1:d54f06e19277 31 lcd.locate(8,1);
avallejopo 1:d54f06e19277 32 lcd.printf("Kd=%d",kdnum);
avallejopo 1:d54f06e19277 33 lcd.locate(0,0);
avallejopo 1:d54f06e19277 34 lcd.printf("Sp=%d",spnum);
avallejopo 1:d54f06e19277 35
avallejopo 0:71c0bb945ae8 36 while(1)
avallejopo 0:71c0bb945ae8 37 {
avallejopo 0:71c0bb945ae8 38 if (!button1)
avallejopo 0:71c0bb945ae8 39 {
avallejopo 1:d54f06e19277 40 if(flagt==0)
avallejopo 1:d54f06e19277 41 {
avallejopo 0:71c0bb945ae8 42 t.start();
avallejopo 0:71c0bb945ae8 43 flagt=1;
avallejopo 0:71c0bb945ae8 44 }
avallejopo 1:d54f06e19277 45
avallejopo 0:71c0bb945ae8 46 led1 =!led1;
avallejopo 0:71c0bb945ae8 47 wait(0.50);
avallejopo 0:71c0bb945ae8 48 if(!button1)
avallejopo 0:71c0bb945ae8 49 {
avallejopo 1:d54f06e19277 50 if(t.read()>10)
avallejopo 1:d54f06e19277 51 {
avallejopo 0:71c0bb945ae8 52 incremento=100;
avallejopo 0:71c0bb945ae8 53 }
avallejopo 1:d54f06e19277 54 else if(t.read()>5.5)
avallejopo 1:d54f06e19277 55 {
avallejopo 0:71c0bb945ae8 56 incremento=10;
avallejopo 0:71c0bb945ae8 57 }
avallejopo 1:d54f06e19277 58
avallejopo 0:71c0bb945ae8 59 if(pos==1)
avallejopo 0:71c0bb945ae8 60 {
avallejopo 1:d54f06e19277 61 if(spnum+incremento>=999)
avallejopo 1:d54f06e19277 62 {
avallejopo 1:d54f06e19277 63 spnum=999;
avallejopo 1:d54f06e19277 64 lcd.locate(3,0);
avallejopo 1:d54f06e19277 65 lcd.printf(" ");
avallejopo 1:d54f06e19277 66 lcd.locate(3,0);
avallejopo 1:d54f06e19277 67 lcd.printf("%d", spnum);
avallejopo 1:d54f06e19277 68 }
avallejopo 1:d54f06e19277 69 else
avallejopo 1:d54f06e19277 70 {
avallejopo 1:d54f06e19277 71 spnum+=incremento;
avallejopo 1:d54f06e19277 72 lcd.locate(3,0);
avallejopo 1:d54f06e19277 73 lcd.printf("%d", spnum);
avallejopo 1:d54f06e19277 74 }
avallejopo 0:71c0bb945ae8 75 }
avallejopo 0:71c0bb945ae8 76 else if(pos==2)
avallejopo 0:71c0bb945ae8 77 {
avallejopo 1:d54f06e19277 78 if(kpnum+incremento>=999)
avallejopo 1:d54f06e19277 79 {
avallejopo 1:d54f06e19277 80 kpnum=999;
avallejopo 1:d54f06e19277 81 lcd.locate(11,0);
avallejopo 1:d54f06e19277 82 lcd.printf(" ");
avallejopo 1:d54f06e19277 83 lcd.locate(11,0);
avallejopo 1:d54f06e19277 84 lcd.printf("%d", kpnum);
avallejopo 1:d54f06e19277 85 }
avallejopo 1:d54f06e19277 86 else
avallejopo 1:d54f06e19277 87 {
avallejopo 1:d54f06e19277 88 kpnum+=incremento;
avallejopo 1:d54f06e19277 89 lcd.locate(11,0);
avallejopo 1:d54f06e19277 90 lcd.printf("%d", kpnum);
avallejopo 1:d54f06e19277 91 }
avallejopo 0:71c0bb945ae8 92 }
avallejopo 0:71c0bb945ae8 93 else if(pos==3)
avallejopo 0:71c0bb945ae8 94 {
avallejopo 1:d54f06e19277 95 if(kinum+incremento>=999)
avallejopo 1:d54f06e19277 96 {
avallejopo 1:d54f06e19277 97 kinum=999;
avallejopo 1:d54f06e19277 98 lcd.locate(3,1);
avallejopo 1:d54f06e19277 99 lcd.printf(" ");
avallejopo 1:d54f06e19277 100 lcd.locate(3,1);
avallejopo 1:d54f06e19277 101 lcd.printf("%d", kinum);
avallejopo 1:d54f06e19277 102 }
avallejopo 1:d54f06e19277 103 else
avallejopo 1:d54f06e19277 104 {
avallejopo 1:d54f06e19277 105 kinum+=incremento;
avallejopo 1:d54f06e19277 106 lcd.locate(3,1);
avallejopo 1:d54f06e19277 107 lcd.printf("%d", kinum);
avallejopo 1:d54f06e19277 108 }
avallejopo 0:71c0bb945ae8 109 }
avallejopo 0:71c0bb945ae8 110 else if(pos==4)
avallejopo 0:71c0bb945ae8 111 {
avallejopo 1:d54f06e19277 112 if(kdnum+incremento>=999)
avallejopo 1:d54f06e19277 113 {
avallejopo 1:d54f06e19277 114 kdnum=999;
avallejopo 1:d54f06e19277 115 lcd.locate(11,1);
avallejopo 1:d54f06e19277 116 lcd.printf(" ");
avallejopo 1:d54f06e19277 117 lcd.locate(11,1);
avallejopo 1:d54f06e19277 118 lcd.printf("%d", kdnum);
avallejopo 1:d54f06e19277 119 }
avallejopo 1:d54f06e19277 120 else
avallejopo 1:d54f06e19277 121 {
avallejopo 1:d54f06e19277 122 kdnum+=incremento;
avallejopo 1:d54f06e19277 123 lcd.locate(11,1);
avallejopo 1:d54f06e19277 124 lcd.printf("%d", kdnum);
avallejopo 1:d54f06e19277 125 }
avallejopo 1:d54f06e19277 126 }
avallejopo 0:71c0bb945ae8 127 }
avallejopo 0:71c0bb945ae8 128 }
avallejopo 1:d54f06e19277 129
avallejopo 1:d54f06e19277 130 if (!button2)
avallejopo 1:d54f06e19277 131 {
avallejopo 1:d54f06e19277 132 if(flagt==0)
avallejopo 1:d54f06e19277 133 {
avallejopo 1:d54f06e19277 134 //t.reset();
avallejopo 1:d54f06e19277 135 t.start();
avallejopo 1:d54f06e19277 136 flagt=1;
avallejopo 1:d54f06e19277 137 }
avallejopo 1:d54f06e19277 138
avallejopo 1:d54f06e19277 139 led1 =!led1;
avallejopo 1:d54f06e19277 140 wait(0.50);
avallejopo 1:d54f06e19277 141
avallejopo 1:d54f06e19277 142 if(!button2)
avallejopo 1:d54f06e19277 143 {
avallejopo 1:d54f06e19277 144 if(t.read()>10)
avallejopo 1:d54f06e19277 145 {
avallejopo 1:d54f06e19277 146 incremento=100;
avallejopo 1:d54f06e19277 147 }
avallejopo 1:d54f06e19277 148 else if(t.read()>5.5)
avallejopo 1:d54f06e19277 149 {
avallejopo 1:d54f06e19277 150 incremento=10;
avallejopo 1:d54f06e19277 151 }
avallejopo 1:d54f06e19277 152
avallejopo 1:d54f06e19277 153 led2 =!led2;
avallejopo 1:d54f06e19277 154 if(pos==1)
avallejopo 1:d54f06e19277 155 {
avallejopo 1:d54f06e19277 156 if(spnum-incremento<0)
avallejopo 1:d54f06e19277 157 {
avallejopo 1:d54f06e19277 158 //No ocurre nada
avallejopo 1:d54f06e19277 159 }
avallejopo 1:d54f06e19277 160 else
avallejopo 1:d54f06e19277 161 {
avallejopo 1:d54f06e19277 162 spnum-=incremento;
avallejopo 1:d54f06e19277 163 lcd.locate(3,0);
avallejopo 1:d54f06e19277 164 lcd.printf(" ");
avallejopo 1:d54f06e19277 165 lcd.locate(3,0);
avallejopo 1:d54f06e19277 166 lcd.printf("%d", spnum);
avallejopo 1:d54f06e19277 167 }
avallejopo 1:d54f06e19277 168 }
avallejopo 1:d54f06e19277 169 else if(pos==2)
avallejopo 1:d54f06e19277 170 {
avallejopo 1:d54f06e19277 171 if(kpnum-incremento<0)
avallejopo 1:d54f06e19277 172 {
avallejopo 1:d54f06e19277 173 //No ocurre nada
avallejopo 1:d54f06e19277 174 }
avallejopo 1:d54f06e19277 175 else
avallejopo 1:d54f06e19277 176 {
avallejopo 1:d54f06e19277 177 kpnum-=incremento;
avallejopo 1:d54f06e19277 178 lcd.locate(11,0);
avallejopo 1:d54f06e19277 179 lcd.printf(" ");
avallejopo 1:d54f06e19277 180 lcd.locate(11,0);
avallejopo 1:d54f06e19277 181 lcd.printf("%d", kpnum);
avallejopo 1:d54f06e19277 182 }
avallejopo 1:d54f06e19277 183 }
avallejopo 1:d54f06e19277 184 else if(pos==3)
avallejopo 1:d54f06e19277 185 {
avallejopo 1:d54f06e19277 186 if(kinum-incremento<0)
avallejopo 1:d54f06e19277 187 {
avallejopo 1:d54f06e19277 188 //No ocurre nada
avallejopo 1:d54f06e19277 189 }
avallejopo 1:d54f06e19277 190 else
avallejopo 1:d54f06e19277 191 {
avallejopo 1:d54f06e19277 192 kinum-=incremento;
avallejopo 1:d54f06e19277 193 lcd.locate(3,1);
avallejopo 1:d54f06e19277 194 lcd.printf(" ");
avallejopo 1:d54f06e19277 195 lcd.locate(3,1);
avallejopo 1:d54f06e19277 196 lcd.printf("%d", kinum);
avallejopo 1:d54f06e19277 197 }
avallejopo 1:d54f06e19277 198 }
avallejopo 1:d54f06e19277 199 else if(pos==4)
avallejopo 1:d54f06e19277 200 {
avallejopo 1:d54f06e19277 201 if(kdnum-incremento<0)
avallejopo 1:d54f06e19277 202 {
avallejopo 1:d54f06e19277 203 //No ocurre nada
avallejopo 1:d54f06e19277 204 }
avallejopo 1:d54f06e19277 205 else
avallejopo 1:d54f06e19277 206 {
avallejopo 1:d54f06e19277 207 kdnum-=incremento;
avallejopo 1:d54f06e19277 208 lcd.locate(11,1);
avallejopo 1:d54f06e19277 209 lcd.printf(" ");
avallejopo 1:d54f06e19277 210 lcd.locate(11,1);
avallejopo 1:d54f06e19277 211 lcd.printf("%d", kdnum);
avallejopo 1:d54f06e19277 212 }
avallejopo 1:d54f06e19277 213 }
avallejopo 1:d54f06e19277 214 }
avallejopo 1:d54f06e19277 215 }
avallejopo 1:d54f06e19277 216
avallejopo 1:d54f06e19277 217 if (!button3)
avallejopo 1:d54f06e19277 218 {
avallejopo 1:d54f06e19277 219 led3 =!led3;
avallejopo 1:d54f06e19277 220 if(pos==4)
avallejopo 1:d54f06e19277 221 {
avallejopo 1:d54f06e19277 222 pos=1;
avallejopo 1:d54f06e19277 223 lcd.locate(3,0);
avallejopo 1:d54f06e19277 224 lcd.printf("%d", spnum);
avallejopo 1:d54f06e19277 225 }
avallejopo 1:d54f06e19277 226 else if (pos==1)
avallejopo 1:d54f06e19277 227 {
avallejopo 1:d54f06e19277 228 pos++;
avallejopo 1:d54f06e19277 229 lcd.locate(11,0);
avallejopo 1:d54f06e19277 230 lcd.printf("%d", kpnum);
avallejopo 1:d54f06e19277 231 }
avallejopo 1:d54f06e19277 232 else if(pos==2)
avallejopo 1:d54f06e19277 233 {
avallejopo 1:d54f06e19277 234 pos++;
avallejopo 1:d54f06e19277 235 lcd.locate(3,1);
avallejopo 1:d54f06e19277 236 lcd.printf("%d", kinum);
avallejopo 1:d54f06e19277 237 }
avallejopo 1:d54f06e19277 238 else if(pos==3)
avallejopo 1:d54f06e19277 239 {
avallejopo 1:d54f06e19277 240 pos++;
avallejopo 1:d54f06e19277 241 lcd.locate(11,1);
avallejopo 1:d54f06e19277 242 lcd.printf("%d", kdnum);
avallejopo 1:d54f06e19277 243 }
avallejopo 1:d54f06e19277 244 wait(0.25);
avallejopo 1:d54f06e19277 245
avallejopo 1:d54f06e19277 246 }
avallejopo 1:d54f06e19277 247
avallejopo 1:d54f06e19277 248 if (button1 && button2)
avallejopo 0:71c0bb945ae8 249 {
avallejopo 0:71c0bb945ae8 250 flagt=0;
avallejopo 0:71c0bb945ae8 251 t.reset();
avallejopo 0:71c0bb945ae8 252 incremento=1;
avallejopo 0:71c0bb945ae8 253 }
avallejopo 1:d54f06e19277 254
avallejopo 1:d54f06e19277 255 }
avallejopo 1:d54f06e19277 256 }
avallejopo 0:71c0bb945ae8 257