C&F

Dependencies:   Debounced TextLCD1 mbed

Committer:
jmcallef
Date:
Thu Oct 24 23:49:23 2013 +0000
Revision:
1:ac004087d490
Parent:
0:623b3e042994
jjjjjjj

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmcallef 0:623b3e042994 1 #include "mbed.h"
jmcallef 0:623b3e042994 2 #include "DebouncedIn.h"
jmcallef 0:623b3e042994 3 #include "TextLCD.h"
jmcallef 0:623b3e042994 4
jmcallef 0:623b3e042994 5 AnalogIn Vin(PTC2);
jmcallef 0:623b3e042994 6 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
jmcallef 0:623b3e042994 7
jmcallef 0:623b3e042994 8 DigitalOut led1(LED1);
jmcallef 0:623b3e042994 9 DigitalOut led2(LED2);
jmcallef 0:623b3e042994 10 DigitalOut led3(LED3);
jmcallef 0:623b3e042994 11 DigitalOut led4(LED4);
jmcallef 0:623b3e042994 12 DebouncedIn button1(PTC12); // Aumento
jmcallef 0:623b3e042994 13 DebouncedIn button2(PTC13); // Disminución
jmcallef 0:623b3e042994 14 DebouncedIn button3(PTC16); // Cambio de variable
jmcallef 0:623b3e042994 15 DebouncedIn button4(PTC17); // Reset
jmcallef 0:623b3e042994 16
jmcallef 0:623b3e042994 17 int C1=0x0E; // solo muestra el curzor.
jmcallef 0:623b3e042994 18 int C2=0x18; // desplaza izquierda.
jmcallef 0:623b3e042994 19 int C3=0x1A; // desplaza derecha.
jmcallef 0:623b3e042994 20 int C4=0x0C; // quito cursor bajo.
jmcallef 0:623b3e042994 21
jmcallef 0:623b3e042994 22 int i; // Indice de la variable.
jmcallef 0:623b3e042994 23 int j; // Controla cambio de posición.
jmcallef 1:ac004087d490 24 int kp, ki, kd, sp, cont;
jmcallef 0:623b3e042994 25
jmcallef 0:623b3e042994 26 int main(){
jmcallef 0:623b3e042994 27 lcd.writeCommand(C1); // Escribimos un comando segun el manual del modulo LCD
jmcallef 0:623b3e042994 28 lcd.cls(); // Borro toda la pantalla
jmcallef 0:623b3e042994 29 lcd.locate(0,0); // Localizo donde se escribirá el siguiente comando.
jmcallef 0:623b3e042994 30 lcd.printf("Sp %d",sp); // Escribe Sp (aparecen desde el punto (0,0)
jmcallef 0:623b3e042994 31 lcd.locate(8,0); // Localizo donde se escribirá el siguiente comando.
jmcallef 0:623b3e042994 32 lcd.printf("Kp %d",kp); // Escribe Kp (aparecen desde el punto (8,0)
jmcallef 0:623b3e042994 33 lcd.locate(0,1);
jmcallef 0:623b3e042994 34 lcd.printf("Ki %d",ki);
jmcallef 0:623b3e042994 35 lcd.locate(8,1);
jmcallef 0:623b3e042994 36 lcd.printf("Kd %d",kd);
jmcallef 0:623b3e042994 37
jmcallef 0:623b3e042994 38
jmcallef 0:623b3e042994 39 while(1){
jmcallef 0:623b3e042994 40 led3 =1;
jmcallef 0:623b3e042994 41 if (button3.falling()){
jmcallef 0:623b3e042994 42 led3 =!led3; // Prendo el LED color rojo cada vez que pulso el boton 3 ya que pasa a valer 0 (encendido).
jmcallef 0:623b3e042994 43 ++j;
jmcallef 0:623b3e042994 44 } // INCREMENTA POSICION DEL MENU CON BOTON 3
jmcallef 0:623b3e042994 45 if (j==0){
jmcallef 0:623b3e042994 46 lcd.locate(3,0);
jmcallef 0:623b3e042994 47 lcd.printf("%d",sp);
jmcallef 1:ac004087d490 48
jmcallef 1:ac004087d490 49 wait(0.2);
jmcallef 0:623b3e042994 50
jmcallef 1:ac004087d490 51 led1 = 1;
jmcallef 1:ac004087d490 52
jmcallef 1:ac004087d490 53 if(button1.falling()) {
jmcallef 1:ac004087d490 54 led1 =!led1; // Prendo el LED color azul cada vez que pulso el boton 1 ya que pasa a valer 0 (encendido).
jmcallef 1:ac004087d490 55 //++sp; // Incrementa valor al pulsar el botón --> Ahora no lo usamos acá ya que necesitamos incremental.
jmcallef 1:ac004087d490 56
jmcallef 1:ac004087d490 57
jmcallef 1:ac004087d490 58 // Ahora comienza el incremental.
jmcallef 1:ac004087d490 59
jmcallef 1:ac004087d490 60 if (!button1) {
jmcallef 1:ac004087d490 61 cont=0;
jmcallef 1:ac004087d490 62 wait(0.2);
jmcallef 1:ac004087d490 63
jmcallef 1:ac004087d490 64 while(cont<20){
jmcallef 1:ac004087d490 65 cont = cont + 1;
jmcallef 1:ac004087d490 66 sp=sp+1;
jmcallef 1:ac004087d490 67 if (sp>1000){ // Ponemos un tope incremental en 10.000
jmcallef 1:ac004087d490 68 sp=1000;
jmcallef 1:ac004087d490 69 }
jmcallef 1:ac004087d490 70 lcd.locate(0,0);
jmcallef 1:ac004087d490 71 lcd.printf("Sp %d",sp);
jmcallef 1:ac004087d490 72
jmcallef 1:ac004087d490 73 wait(0.3);
jmcallef 1:ac004087d490 74 if(button1){
jmcallef 1:ac004087d490 75 break;
jmcallef 1:ac004087d490 76 }
jmcallef 1:ac004087d490 77 while(cont>=20){
jmcallef 1:ac004087d490 78 cont=cont+1;
jmcallef 1:ac004087d490 79 sp=sp+10;
jmcallef 1:ac004087d490 80 if (sp>1000){ // Ponemos un tope incremental en 10.000
jmcallef 1:ac004087d490 81 sp=1000;
jmcallef 1:ac004087d490 82 }
jmcallef 1:ac004087d490 83 lcd.locate(0,0);
jmcallef 1:ac004087d490 84 lcd.printf("Sp %d",sp);
jmcallef 1:ac004087d490 85
jmcallef 1:ac004087d490 86 wait(0.3);
jmcallef 1:ac004087d490 87 if(button1){
jmcallef 1:ac004087d490 88 break;
jmcallef 1:ac004087d490 89 }
jmcallef 1:ac004087d490 90
jmcallef 1:ac004087d490 91 while(cont>40){
jmcallef 1:ac004087d490 92 cont = cont + 1;
jmcallef 1:ac004087d490 93 sp=sp+100;
jmcallef 1:ac004087d490 94 if (sp>1000){ // Ponemos un tope incremental en 10.000
jmcallef 1:ac004087d490 95 sp=1000;
jmcallef 1:ac004087d490 96 }
jmcallef 1:ac004087d490 97 lcd.locate(0,0);
jmcallef 1:ac004087d490 98 lcd.printf("Sp %d",sp);
jmcallef 1:ac004087d490 99
jmcallef 1:ac004087d490 100 wait(0.3);
jmcallef 1:ac004087d490 101 if(button1){
jmcallef 1:ac004087d490 102 break;
jmcallef 1:ac004087d490 103 }
jmcallef 1:ac004087d490 104 }
jmcallef 1:ac004087d490 105 }
jmcallef 1:ac004087d490 106 }
jmcallef 1:ac004087d490 107 }
jmcallef 1:ac004087d490 108
jmcallef 1:ac004087d490 109 // Aqui termina el incremental.
jmcallef 1:ac004087d490 110 }
jmcallef 0:623b3e042994 111
jmcallef 0:623b3e042994 112
jmcallef 0:623b3e042994 113 led2 =1;
jmcallef 0:623b3e042994 114 if (button2.falling()) {
jmcallef 0:623b3e042994 115 led2 =!led2; // Prendo el LED color rojo cada vez que pulso el boton 2 ya que pasa a valer 0 (encendido).
jmcallef 1:ac004087d490 116
jmcallef 1:ac004087d490 117 //--sp; // Reduce el valor al pulsar el botón.
jmcallef 0:623b3e042994 118 }
jmcallef 1:ac004087d490 119
jmcallef 1:ac004087d490 120
jmcallef 1:ac004087d490 121 // Ahora comienza el decremental.
jmcallef 1:ac004087d490 122
jmcallef 1:ac004087d490 123 if (!button2) {
jmcallef 1:ac004087d490 124 cont=0;
jmcallef 1:ac004087d490 125 wait(0.2);
jmcallef 1:ac004087d490 126
jmcallef 1:ac004087d490 127 while(cont<20){
jmcallef 1:ac004087d490 128 cont = cont + 1;
jmcallef 1:ac004087d490 129 sp=sp-1;
jmcallef 1:ac004087d490 130
jmcallef 1:ac004087d490 131 lcd.locate(3,0);
jmcallef 1:ac004087d490 132 lcd.printf(" ");
jmcallef 1:ac004087d490 133 lcd.locate(0,0);
jmcallef 1:ac004087d490 134 lcd.printf("Sp %d",sp);
jmcallef 1:ac004087d490 135
jmcallef 1:ac004087d490 136 if (sp<0){ // No permitimos valores negativos, definimos valor mínimo en 0.
jmcallef 1:ac004087d490 137 sp=0;
jmcallef 1:ac004087d490 138 }
jmcallef 1:ac004087d490 139
jmcallef 1:ac004087d490 140
jmcallef 1:ac004087d490 141 wait(0.3);
jmcallef 1:ac004087d490 142 if(button2){
jmcallef 1:ac004087d490 143 break;
jmcallef 1:ac004087d490 144 }
jmcallef 1:ac004087d490 145
jmcallef 1:ac004087d490 146 while(cont>=20){
jmcallef 1:ac004087d490 147 cont=cont+1;
jmcallef 1:ac004087d490 148 sp=sp-10;
jmcallef 1:ac004087d490 149 if (sp<0){ // No permitimos valores negativos, definimos valor mínimo en 0.
jmcallef 1:ac004087d490 150 sp=0;
jmcallef 1:ac004087d490 151 }
jmcallef 1:ac004087d490 152
jmcallef 1:ac004087d490 153 lcd.locate(0,0);
jmcallef 1:ac004087d490 154 lcd.printf("Sp %d ",sp);
jmcallef 1:ac004087d490 155
jmcallef 1:ac004087d490 156
jmcallef 1:ac004087d490 157 wait(0.3);
jmcallef 1:ac004087d490 158 if(button2){
jmcallef 1:ac004087d490 159 break;
jmcallef 1:ac004087d490 160 }
jmcallef 1:ac004087d490 161
jmcallef 1:ac004087d490 162 while(cont>40){
jmcallef 1:ac004087d490 163 cont = cont + 1;
jmcallef 1:ac004087d490 164 sp=sp-100;
jmcallef 1:ac004087d490 165
jmcallef 1:ac004087d490 166 if (sp<0){ // No permitimos valores negativos, definimos valor mínimo en 0.
jmcallef 1:ac004087d490 167 sp=0;
jmcallef 1:ac004087d490 168 }
jmcallef 1:ac004087d490 169
jmcallef 1:ac004087d490 170 lcd.locate(0,0);
jmcallef 1:ac004087d490 171 lcd.printf("Sp %d ",sp);
jmcallef 1:ac004087d490 172
jmcallef 1:ac004087d490 173
jmcallef 1:ac004087d490 174 wait(0.3);
jmcallef 1:ac004087d490 175 if(button2){
jmcallef 1:ac004087d490 176 break;
jmcallef 1:ac004087d490 177 }
jmcallef 1:ac004087d490 178 }
jmcallef 1:ac004087d490 179 }
jmcallef 1:ac004087d490 180 }
jmcallef 1:ac004087d490 181 }
jmcallef 1:ac004087d490 182
jmcallef 1:ac004087d490 183 // Aqui termina el decremental.
jmcallef 1:ac004087d490 184
jmcallef 1:ac004087d490 185
jmcallef 1:ac004087d490 186
jmcallef 1:ac004087d490 187
jmcallef 1:ac004087d490 188
jmcallef 1:ac004087d490 189
jmcallef 0:623b3e042994 190
jmcallef 0:623b3e042994 191 }
jmcallef 0:623b3e042994 192 if (j==1){
jmcallef 0:623b3e042994 193 lcd.locate(11,0);
jmcallef 0:623b3e042994 194 lcd.printf("%d",kp);
jmcallef 0:623b3e042994 195 wait(0.3);
jmcallef 0:623b3e042994 196 led1 =1;
jmcallef 0:623b3e042994 197 if (button1.falling()) {
jmcallef 0:623b3e042994 198 led1 =!led1;
jmcallef 0:623b3e042994 199 ++kp;
jmcallef 0:623b3e042994 200 }
jmcallef 0:623b3e042994 201 led2 =1;
jmcallef 0:623b3e042994 202 if (button2.falling()) {
jmcallef 0:623b3e042994 203 lcd.locate(11,0);
jmcallef 0:623b3e042994 204 lcd.printf("%d ");
jmcallef 0:623b3e042994 205 led2 =!led2;
jmcallef 0:623b3e042994 206 --kp;
jmcallef 0:623b3e042994 207 }
jmcallef 0:623b3e042994 208 if (kp>10000){
jmcallef 0:623b3e042994 209 kp=10000;
jmcallef 0:623b3e042994 210 lcd.locate(11,0);
jmcallef 0:623b3e042994 211 lcd.printf("%d",kp);
jmcallef 0:623b3e042994 212 }
jmcallef 0:623b3e042994 213
jmcallef 0:623b3e042994 214 if (kp<0){
jmcallef 0:623b3e042994 215 kp=0;
jmcallef 0:623b3e042994 216 lcd.locate(11,0);
jmcallef 0:623b3e042994 217 lcd.printf("%d",kp);
jmcallef 0:623b3e042994 218 }
jmcallef 0:623b3e042994 219 }
jmcallef 0:623b3e042994 220 if (j==2){
jmcallef 0:623b3e042994 221 lcd.locate(3,1);
jmcallef 0:623b3e042994 222 lcd.printf("%d",ki);
jmcallef 0:623b3e042994 223 wait(0.3);
jmcallef 0:623b3e042994 224 led1 =1;
jmcallef 0:623b3e042994 225 if (button1.falling()){
jmcallef 0:623b3e042994 226 led1 =!led1;
jmcallef 0:623b3e042994 227 ++ki;
jmcallef 0:623b3e042994 228 }
jmcallef 0:623b3e042994 229 led2 =1;
jmcallef 0:623b3e042994 230 if (button2.falling()){
jmcallef 0:623b3e042994 231 lcd.locate(3,1);
jmcallef 0:623b3e042994 232 lcd.printf("%d ");
jmcallef 0:623b3e042994 233 led2 =!led2;
jmcallef 0:623b3e042994 234 --ki;
jmcallef 0:623b3e042994 235 }
jmcallef 0:623b3e042994 236 if (ki>10000){
jmcallef 0:623b3e042994 237 ki=10000;
jmcallef 0:623b3e042994 238 lcd.locate(3,1);
jmcallef 0:623b3e042994 239 lcd.printf("%d",ki);
jmcallef 0:623b3e042994 240 }
jmcallef 0:623b3e042994 241
jmcallef 0:623b3e042994 242 if (ki<0){
jmcallef 0:623b3e042994 243 ki=0;
jmcallef 0:623b3e042994 244 lcd.locate(3,1);
jmcallef 0:623b3e042994 245 lcd.printf("%d",ki);
jmcallef 0:623b3e042994 246 }
jmcallef 0:623b3e042994 247 }
jmcallef 0:623b3e042994 248
jmcallef 0:623b3e042994 249 if (j==3){
jmcallef 0:623b3e042994 250 lcd.locate(11,1);
jmcallef 0:623b3e042994 251 lcd.printf("%d",kd);
jmcallef 0:623b3e042994 252 wait(0.3);
jmcallef 0:623b3e042994 253 led1 =1;
jmcallef 0:623b3e042994 254 if (button1.falling()){
jmcallef 0:623b3e042994 255 led1 =!led1;
jmcallef 0:623b3e042994 256 ++kd;
jmcallef 0:623b3e042994 257 }
jmcallef 0:623b3e042994 258 led2 =1;
jmcallef 0:623b3e042994 259 if (button2.falling()){
jmcallef 0:623b3e042994 260 lcd.locate(11,1);
jmcallef 0:623b3e042994 261 lcd.printf("%d ");
jmcallef 0:623b3e042994 262 led2 =!led2;
jmcallef 0:623b3e042994 263 --kd;
jmcallef 0:623b3e042994 264
jmcallef 0:623b3e042994 265
jmcallef 0:623b3e042994 266 }
jmcallef 0:623b3e042994 267 if (kd>10000){
jmcallef 0:623b3e042994 268 kd=10000;
jmcallef 0:623b3e042994 269 lcd.locate(11,1);
jmcallef 0:623b3e042994 270 lcd.printf("%d",kd);
jmcallef 0:623b3e042994 271 }
jmcallef 0:623b3e042994 272
jmcallef 0:623b3e042994 273 if (kd<0){
jmcallef 0:623b3e042994 274 kd=0;
jmcallef 0:623b3e042994 275 lcd.locate(11,1);
jmcallef 0:623b3e042994 276 lcd.printf("%d",kd);
jmcallef 0:623b3e042994 277 }
jmcallef 0:623b3e042994 278 }
jmcallef 0:623b3e042994 279
jmcallef 0:623b3e042994 280 if (j==4){
jmcallef 0:623b3e042994 281 j=0;
jmcallef 0:623b3e042994 282 }
jmcallef 0:623b3e042994 283
jmcallef 0:623b3e042994 284 if (button4.falling()){
jmcallef 0:623b3e042994 285 sp=0;
jmcallef 0:623b3e042994 286 kp=0;
jmcallef 0:623b3e042994 287 ki=0;
jmcallef 0:623b3e042994 288 kd=0;
jmcallef 0:623b3e042994 289 lcd.locate(11,1);
jmcallef 0:623b3e042994 290 lcd.printf("%d ",kd);
jmcallef 0:623b3e042994 291 lcd.locate(3,1);
jmcallef 0:623b3e042994 292 lcd.printf("%d ",ki);
jmcallef 0:623b3e042994 293 lcd.locate(11,0);
jmcallef 0:623b3e042994 294 lcd.printf("%d ",kp);
jmcallef 0:623b3e042994 295 lcd.locate(3,0);
jmcallef 0:623b3e042994 296 lcd.printf("%d ",sp);
jmcallef 0:623b3e042994 297 }
jmcallef 0:623b3e042994 298 }
jmcallef 0:623b3e042994 299 }