Parametros PID, Incremental (antirebote)

Dependencies:   Debounced TextLCD mbed

Fork of Tarea2 by Alexander Vallejo

Committer:
avallejopo
Date:
Wed Oct 16 06:43:52 2013 +0000
Revision:
0:71c0bb945ae8
Child:
1:d54f06e19277
Antirebote implementado

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 0:71c0bb945ae8 26
avallejopo 0:71c0bb945ae8 27 lcd.locate(8,0); lcd.printf("Kp=%d",kpnum);
avallejopo 0:71c0bb945ae8 28 //lcd.locate(0,1); lcd.printf("Ki=%d",kinum);
avallejopo 0:71c0bb945ae8 29 //lcd.locate(8,1); lcd.printf("Kd=%d",kdnum);
avallejopo 0:71c0bb945ae8 30 //lcd.locate(0,0); lcd.printf("Sp=%d",spnum);
avallejopo 0:71c0bb945ae8 31
avallejopo 0:71c0bb945ae8 32 while(1)
avallejopo 0:71c0bb945ae8 33 {
avallejopo 0:71c0bb945ae8 34 if (!button1)
avallejopo 0:71c0bb945ae8 35 {
avallejopo 0:71c0bb945ae8 36 if(flagt==0){
avallejopo 0:71c0bb945ae8 37 t.start();
avallejopo 0:71c0bb945ae8 38 flagt=1;
avallejopo 0:71c0bb945ae8 39 }
avallejopo 0:71c0bb945ae8 40
avallejopo 0:71c0bb945ae8 41 led1 =!led1;
avallejopo 0:71c0bb945ae8 42 wait(0.50);
avallejopo 0:71c0bb945ae8 43 if(!button1)
avallejopo 0:71c0bb945ae8 44 {
avallejopo 0:71c0bb945ae8 45 if(t.read()>15){
avallejopo 0:71c0bb945ae8 46 incremento=1000;
avallejopo 0:71c0bb945ae8 47 }
avallejopo 0:71c0bb945ae8 48 else if(t.read()>10){
avallejopo 0:71c0bb945ae8 49 incremento=100;
avallejopo 0:71c0bb945ae8 50 }
avallejopo 0:71c0bb945ae8 51 else if(t.read()>5){
avallejopo 0:71c0bb945ae8 52 incremento=10;
avallejopo 0:71c0bb945ae8 53 }
avallejopo 0:71c0bb945ae8 54
avallejopo 0:71c0bb945ae8 55 if(pos==1)
avallejopo 0:71c0bb945ae8 56 {
avallejopo 0:71c0bb945ae8 57 spnum+=incremento;
avallejopo 0:71c0bb945ae8 58 lcd.locate(3,0); lcd.printf("%d", spnum);
avallejopo 0:71c0bb945ae8 59 }
avallejopo 0:71c0bb945ae8 60 else if(pos==2)
avallejopo 0:71c0bb945ae8 61 {
avallejopo 0:71c0bb945ae8 62 kpnum+=incremento;
avallejopo 0:71c0bb945ae8 63 lcd.locate(11,0); lcd.printf("%d", kpnum);
avallejopo 0:71c0bb945ae8 64 }
avallejopo 0:71c0bb945ae8 65 else if(pos==3)
avallejopo 0:71c0bb945ae8 66 {
avallejopo 0:71c0bb945ae8 67 kinum+=incremento;
avallejopo 0:71c0bb945ae8 68 lcd.locate(3,1); lcd.printf("%d", kinum);
avallejopo 0:71c0bb945ae8 69 }
avallejopo 0:71c0bb945ae8 70 else if(pos==4)
avallejopo 0:71c0bb945ae8 71 {
avallejopo 0:71c0bb945ae8 72 kdnum+=incremento;
avallejopo 0:71c0bb945ae8 73 lcd.locate(11,1); lcd.printf("%d", kdnum);
avallejopo 0:71c0bb945ae8 74 }
avallejopo 0:71c0bb945ae8 75 }
avallejopo 0:71c0bb945ae8 76 }
avallejopo 0:71c0bb945ae8 77 else
avallejopo 0:71c0bb945ae8 78 {
avallejopo 0:71c0bb945ae8 79 flagt=0;
avallejopo 0:71c0bb945ae8 80 t.reset();
avallejopo 0:71c0bb945ae8 81 incremento=1;
avallejopo 0:71c0bb945ae8 82 }
avallejopo 0:71c0bb945ae8 83 /*
avallejopo 0:71c0bb945ae8 84 if (button2.falling())
avallejopo 0:71c0bb945ae8 85 {
avallejopo 0:71c0bb945ae8 86 led2 =!led2;
avallejopo 0:71c0bb945ae8 87 if(pos==1)
avallejopo 0:71c0bb945ae8 88 {
avallejopo 0:71c0bb945ae8 89 if(spnum==0)
avallejopo 0:71c0bb945ae8 90 {
avallejopo 0:71c0bb945ae8 91 //No ocurre nada
avallejopo 0:71c0bb945ae8 92 }
avallejopo 0:71c0bb945ae8 93 else
avallejopo 0:71c0bb945ae8 94 {
avallejopo 0:71c0bb945ae8 95 spnum--;
avallejopo 0:71c0bb945ae8 96 lcd.locate(3,0); lcd.printf(" ");
avallejopo 0:71c0bb945ae8 97 lcd.locate(3,0);
avallejopo 0:71c0bb945ae8 98 lcd.printf("%d", spnum);
avallejopo 0:71c0bb945ae8 99 }
avallejopo 0:71c0bb945ae8 100 }
avallejopo 0:71c0bb945ae8 101 else if(pos==2)
avallejopo 0:71c0bb945ae8 102 {
avallejopo 0:71c0bb945ae8 103 if(kpnum==0)
avallejopo 0:71c0bb945ae8 104 {
avallejopo 0:71c0bb945ae8 105 //No ocurre nada
avallejopo 0:71c0bb945ae8 106 }
avallejopo 0:71c0bb945ae8 107 else
avallejopo 0:71c0bb945ae8 108 {
avallejopo 0:71c0bb945ae8 109 kpnum--;
avallejopo 0:71c0bb945ae8 110 lcd.locate(11,0); lcd.printf(" ");
avallejopo 0:71c0bb945ae8 111 lcd.locate(11,0);
avallejopo 0:71c0bb945ae8 112 lcd.printf("%d", kpnum);
avallejopo 0:71c0bb945ae8 113 }
avallejopo 0:71c0bb945ae8 114 }
avallejopo 0:71c0bb945ae8 115 else if(pos==3)
avallejopo 0:71c0bb945ae8 116 {
avallejopo 0:71c0bb945ae8 117 if(kinum==0)
avallejopo 0:71c0bb945ae8 118 {
avallejopo 0:71c0bb945ae8 119 //No ocurre nada
avallejopo 0:71c0bb945ae8 120 }
avallejopo 0:71c0bb945ae8 121 else
avallejopo 0:71c0bb945ae8 122 {
avallejopo 0:71c0bb945ae8 123 kinum--;
avallejopo 0:71c0bb945ae8 124 lcd.locate(3,1); lcd.printf(" ");
avallejopo 0:71c0bb945ae8 125 lcd.locate(3,1);
avallejopo 0:71c0bb945ae8 126 lcd.printf("%d", kinum);
avallejopo 0:71c0bb945ae8 127 }
avallejopo 0:71c0bb945ae8 128 }
avallejopo 0:71c0bb945ae8 129 else if(pos==4)
avallejopo 0:71c0bb945ae8 130 {
avallejopo 0:71c0bb945ae8 131 if(kdnum==0)
avallejopo 0:71c0bb945ae8 132 {
avallejopo 0:71c0bb945ae8 133 //No ocurre nada
avallejopo 0:71c0bb945ae8 134 }
avallejopo 0:71c0bb945ae8 135 else
avallejopo 0:71c0bb945ae8 136 {
avallejopo 0:71c0bb945ae8 137 kdnum--;
avallejopo 0:71c0bb945ae8 138 lcd.locate(11,1); lcd.printf(" ");
avallejopo 0:71c0bb945ae8 139 lcd.locate(11,1);
avallejopo 0:71c0bb945ae8 140 lcd.printf("%d", kdnum);
avallejopo 0:71c0bb945ae8 141 }
avallejopo 0:71c0bb945ae8 142 }
avallejopo 0:71c0bb945ae8 143 }
avallejopo 0:71c0bb945ae8 144
avallejopo 0:71c0bb945ae8 145 if (button3.falling())
avallejopo 0:71c0bb945ae8 146 {
avallejopo 0:71c0bb945ae8 147 led3 =!led3;
avallejopo 0:71c0bb945ae8 148 if(pos==4)
avallejopo 0:71c0bb945ae8 149 {
avallejopo 0:71c0bb945ae8 150 pos=1;
avallejopo 0:71c0bb945ae8 151 lcd.locate(3,0);lcd.printf("%d", spnum);
avallejopo 0:71c0bb945ae8 152 }
avallejopo 0:71c0bb945ae8 153 else if (pos==1)
avallejopo 0:71c0bb945ae8 154 {
avallejopo 0:71c0bb945ae8 155 pos++;
avallejopo 0:71c0bb945ae8 156 lcd.locate(11,0);lcd.printf("%d", kpnum);
avallejopo 0:71c0bb945ae8 157 }
avallejopo 0:71c0bb945ae8 158 else if(pos==2){
avallejopo 0:71c0bb945ae8 159 pos++;
avallejopo 0:71c0bb945ae8 160 lcd.locate(3,1);lcd.printf("%d", kinum);
avallejopo 0:71c0bb945ae8 161 }
avallejopo 0:71c0bb945ae8 162 else if(pos==3){
avallejopo 0:71c0bb945ae8 163 pos++;
avallejopo 0:71c0bb945ae8 164 lcd.locate(11,1);lcd.printf("%d", kdnum);
avallejopo 0:71c0bb945ae8 165 }
avallejopo 0:71c0bb945ae8 166
avallejopo 0:71c0bb945ae8 167 }
avallejopo 0:71c0bb945ae8 168 */
avallejopo 0:71c0bb945ae8 169 }
avallejopo 0:71c0bb945ae8 170 }