d
Dependencies: Debounced TextLCD mbed
main.cpp@0:1fe45e27a3c7, 2013-12-12 (annotated)
- Committer:
- salvarear
- Date:
- Thu Dec 12 20:41:26 2013 +0000
- Revision:
- 0:1fe45e27a3c7
d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
salvarear | 0:1fe45e27a3c7 | 1 | #include "mbed.h" |
salvarear | 0:1fe45e27a3c7 | 2 | #include "DebouncedIn.h" |
salvarear | 0:1fe45e27a3c7 | 3 | #include "TextLCD.h" |
salvarear | 0:1fe45e27a3c7 | 4 | AnalogIn Vin(PTC2); |
salvarear | 0:1fe45e27a3c7 | 5 | TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 //documentacion de las librerias y disposicion de pines |
salvarear | 0:1fe45e27a3c7 | 6 | |
salvarear | 0:1fe45e27a3c7 | 7 | DigitalOut led1(LED1); |
salvarear | 0:1fe45e27a3c7 | 8 | DigitalOut led2(LED2); |
salvarear | 0:1fe45e27a3c7 | 9 | DigitalOut led3(LED3); |
salvarear | 0:1fe45e27a3c7 | 10 | DebouncedIn b1(PTC12); //boton incrementa. |
salvarear | 0:1fe45e27a3c7 | 11 | DebouncedIn b2(PTC13); //boton decrementa. |
salvarear | 0:1fe45e27a3c7 | 12 | DebouncedIn b3(PTB8); //boton cambio menu. |
salvarear | 0:1fe45e27a3c7 | 13 | DebouncedIn b4(PTB9); //boton reset. |
salvarear | 0:1fe45e27a3c7 | 14 | |
salvarear | 0:1fe45e27a3c7 | 15 | |
salvarear | 0:1fe45e27a3c7 | 16 | int C1=0x0E; // solo muestra el cursor |
salvarear | 0:1fe45e27a3c7 | 17 | int C2=0x18; // desplaza el cursor a la izquierda |
salvarear | 0:1fe45e27a3c7 | 18 | int C3=0x1A; // desplaza el cursor derecha |
salvarear | 0:1fe45e27a3c7 | 19 | int C4=0x0C; // quita el cursor bajo |
salvarear | 0:1fe45e27a3c7 | 20 | int a; |
salvarear | 0:1fe45e27a3c7 | 21 | int b; |
salvarear | 0:1fe45e27a3c7 | 22 | int kp, ki, kd, sp, err, med, pid, ap, ai, ad, err_v; //revisar antes de la primera tarear(PID) |
salvarear | 0:1fe45e27a3c7 | 23 | |
salvarear | 0:1fe45e27a3c7 | 24 | int main() { |
salvarear | 0:1fe45e27a3c7 | 25 | lcd.cls(); |
salvarear | 0:1fe45e27a3c7 | 26 | lcd.printf("Sp%d",sp); //ubicacion de las variables en la pantalla |
salvarear | 0:1fe45e27a3c7 | 27 | lcd.locate(8,0); |
salvarear | 0:1fe45e27a3c7 | 28 | lcd.printf("Kp%d",kp); |
salvarear | 0:1fe45e27a3c7 | 29 | lcd.locate(0,1); |
salvarear | 0:1fe45e27a3c7 | 30 | lcd.printf("Ki%d",ki); |
salvarear | 0:1fe45e27a3c7 | 31 | lcd.locate(8,1); |
salvarear | 0:1fe45e27a3c7 | 32 | lcd.printf("Kd%d",kd); |
salvarear | 0:1fe45e27a3c7 | 33 | lcd.writeCommand(C1); |
salvarear | 0:1fe45e27a3c7 | 34 | lcd.locate(0,0); |
salvarear | 0:1fe45e27a3c7 | 35 | lcd.printf("Sp%d",sp); |
salvarear | 0:1fe45e27a3c7 | 36 | |
salvarear | 0:1fe45e27a3c7 | 37 | while(1) { //inicio cliclos del pid |
salvarear | 0:1fe45e27a3c7 | 38 | if (b1.falling()) { // incrementa |
salvarear | 0:1fe45e27a3c7 | 39 | led1 =!led1; |
salvarear | 0:1fe45e27a3c7 | 40 | ++a; |
salvarear | 0:1fe45e27a3c7 | 41 | lcd.locate(6,0); |
salvarear | 0:1fe45e27a3c7 | 42 | lcd.printf("%d", a); |
salvarear | 0:1fe45e27a3c7 | 43 | } |
salvarear | 0:1fe45e27a3c7 | 44 | if (b2.falling()) { //decrementa |
salvarear | 0:1fe45e27a3c7 | 45 | led2 =!led2; |
salvarear | 0:1fe45e27a3c7 | 46 | --a; |
salvarear | 0:1fe45e27a3c7 | 47 | lcd.locate(6,0); |
salvarear | 0:1fe45e27a3c7 | 48 | lcd.printf("%d", a); |
salvarear | 0:1fe45e27a3c7 | 49 | } |
salvarear | 0:1fe45e27a3c7 | 50 | if (b3.falling()) { |
salvarear | 0:1fe45e27a3c7 | 51 | //botones |
salvarear | 0:1fe45e27a3c7 | 52 | if (b==0){ |
salvarear | 0:1fe45e27a3c7 | 53 | lcd.locate(2,0); |
salvarear | 0:1fe45e27a3c7 | 54 | lcd.printf("%d",sp); |
salvarear | 0:1fe45e27a3c7 | 55 | if (b1.falling()) { |
salvarear | 0:1fe45e27a3c7 | 56 | ++sp; |
salvarear | 0:1fe45e27a3c7 | 57 | } |
salvarear | 0:1fe45e27a3c7 | 58 | if (b2.falling()) { |
salvarear | 0:1fe45e27a3c7 | 59 | --sp; |
salvarear | 0:1fe45e27a3c7 | 60 | } |
salvarear | 0:1fe45e27a3c7 | 61 | } |
salvarear | 0:1fe45e27a3c7 | 62 | if (b==1) { |
salvarear | 0:1fe45e27a3c7 | 63 | lcd.locate(10,0); |
salvarear | 0:1fe45e27a3c7 | 64 | lcd.printf("%d",kp); |
salvarear | 0:1fe45e27a3c7 | 65 | if (b1.falling()){ |
salvarear | 0:1fe45e27a3c7 | 66 | ++kp; |
salvarear | 0:1fe45e27a3c7 | 67 | } |
salvarear | 0:1fe45e27a3c7 | 68 | if (b2.falling()) { |
salvarear | 0:1fe45e27a3c7 | 69 | --kp; |
salvarear | 0:1fe45e27a3c7 | 70 | } |
salvarear | 0:1fe45e27a3c7 | 71 | } |
salvarear | 0:1fe45e27a3c7 | 72 | if (b==2) { |
salvarear | 0:1fe45e27a3c7 | 73 | lcd.locate(2,1); |
salvarear | 0:1fe45e27a3c7 | 74 | lcd.printf("%d",ki); |
salvarear | 0:1fe45e27a3c7 | 75 | if (b1.falling()){ |
salvarear | 0:1fe45e27a3c7 | 76 | ++ki; |
salvarear | 0:1fe45e27a3c7 | 77 | } |
salvarear | 0:1fe45e27a3c7 | 78 | if (b2.falling()){ |
salvarear | 0:1fe45e27a3c7 | 79 | --ki; |
salvarear | 0:1fe45e27a3c7 | 80 | } |
salvarear | 0:1fe45e27a3c7 | 81 | } |
salvarear | 0:1fe45e27a3c7 | 82 | if (b==3) { |
salvarear | 0:1fe45e27a3c7 | 83 | lcd.locate(10,1); |
salvarear | 0:1fe45e27a3c7 | 84 | lcd.printf("%d",kd); |
salvarear | 0:1fe45e27a3c7 | 85 | if (b1.falling()){ |
salvarear | 0:1fe45e27a3c7 | 86 | ++kd; |
salvarear | 0:1fe45e27a3c7 | 87 | } |
salvarear | 0:1fe45e27a3c7 | 88 | if (b2.falling()){ |
salvarear | 0:1fe45e27a3c7 | 89 | --kd |
salvarear | 0:1fe45e27a3c7 | 90 | else(b==4) { |
salvarear | 0:1fe45e27a3c7 | 91 | b=0; |
salvarear | 0:1fe45e27a3c7 | 92 | } |
salvarear | 0:1fe45e27a3c7 | 93 | } |
salvarear | 0:1fe45e27a3c7 | 94 | if (b4.falling()){ |
salvarear | 0:1fe45e27a3c7 | 95 | break; |
salvarear | 0:1fe45e27a3c7 | 96 | } } |
salvarear | 0:1fe45e27a3c7 | 97 | } |
salvarear | 0:1fe45e27a3c7 | 98 | |
salvarear | 0:1fe45e27a3c7 | 99 | |
salvarear | 0:1fe45e27a3c7 | 100 | lcd.writeCommand(C4); |
salvarear | 0:1fe45e27a3c7 | 101 | lcd.cls(); |
salvarear | 0:1fe45e27a3c7 | 102 | lcd.printf(" Guardando Datos!"); |
salvarear | 0:1fe45e27a3c7 | 103 | wait(2); |
salvarear | 0:1fe45e27a3c7 | 104 | lcd.printf(" Espere...."); |
salvarear | 0:1fe45e27a3c7 | 105 | wait(2); |
salvarear | 0:1fe45e27a3c7 | 106 | lcd.cls(); |
salvarear | 0:1fe45e27a3c7 | 107 | lcd.printf("Iniciando PID"); |
salvarear | 0:1fe45e27a3c7 | 108 | wait(2); |
salvarear | 0:1fe45e27a3c7 | 109 | |
salvarear | 0:1fe45e27a3c7 | 110 | lcd.cls(); |
salvarear | 0:1fe45e27a3c7 | 111 | lcd.printf("Er%d",err); |
salvarear | 0:1fe45e27a3c7 | 112 | lcd.locate(8,0); |
salvarear | 0:1fe45e27a3c7 | 113 | lcd.printf("Me%d",med); |
salvarear | 0:1fe45e27a3c7 | 114 | lcd.locate(0,1); |
salvarear | 0:1fe45e27a3c7 | 115 | lcd.printf("Sp%d",sp); |
salvarear | 0:1fe45e27a3c7 | 116 | lcd.locate(8,1); |
salvarear | 0:1fe45e27a3c7 | 117 | lcd.printf("Co%d",pid); |
salvarear | 0:1fe45e27a3c7 | 118 | wait(5); |
salvarear | 0:1fe45e27a3c7 | 119 | |
salvarear | 0:1fe45e27a3c7 | 120 | void star_patch(void){ //funcion que imprime los caracteres que no van a variar en el display |
salvarear | 0:1fe45e27a3c7 | 121 | lcd.printf("SP="); |
salvarear | 0:1fe45e27a3c7 | 122 | lcd.locate(7,0); |
salvarear | 0:1fe45e27a3c7 | 123 | lcd.printf("Kp="); |
salvarear | 0:1fe45e27a3c7 | 124 | lcd.locate(0,1); |
salvarear | 0:1fe45e27a3c7 | 125 | lcd.printf("Ki="); |
salvarear | 0:1fe45e27a3c7 | 126 | lcd.locate(7,1); |
salvarear | 0:1fe45e27a3c7 | 127 | lcd.printf("Kd="); |
salvarear | 0:1fe45e27a3c7 | 128 | lcd.locate(3,0); |
salvarear | 0:1fe45e27a3c7 | 129 | } |
salvarear | 0:1fe45e27a3c7 | 130 | |
salvarear | 0:1fe45e27a3c7 | 131 | int main(){ |
salvarear | 0:1fe45e27a3c7 | 132 | star_patch(); |
salvarear | 0:1fe45e27a3c7 | 133 | while(1){ |
salvarear | 0:1fe45e27a3c7 | 134 | if(k==3)k=0; |
salvarear | 0:1fe45e27a3c7 | 135 | if(salto.read()==0){ |
salvarear | 0:1fe45e27a3c7 | 136 | def_posicion(k); |
salvarear | 0:1fe45e27a3c7 | 137 | k++; |
salvarear | 0:1fe45e27a3c7 | 138 | } |
salvarear | 0:1fe45e27a3c7 | 139 | else if(mas.read()==0){ |
salvarear | 0:1fe45e27a3c7 | 140 | incremento(k); |
salvarear | 0:1fe45e27a3c7 | 141 | } |
salvarear | 0:1fe45e27a3c7 | 142 | else if(menos.read()==0){ |
salvarear | 0:1fe45e27a3c7 | 143 | decremento(k); |
salvarear | 0:1fe45e27a3c7 | 144 | } |
salvarear | 0:1fe45e27a3c7 | 145 | } |
salvarear | 0:1fe45e27a3c7 | 146 | } |
salvarear | 0:1fe45e27a3c7 | 147 | |
salvarear | 0:1fe45e27a3c7 | 148 | //calculo del pid |
salvarear | 0:1fe45e27a3c7 | 149 | |
salvarear | 0:1fe45e27a3c7 | 150 | while(1) { |
salvarear | 0:1fe45e27a3c7 | 151 | |
salvarear | 0:1fe45e27a3c7 | 152 | err = (sp-med); |
salvarear | 0:1fe45e27a3c7 | 153 | ap = kp*err; |
salvarear | 0:1fe45e27a3c7 | 154 | ai =(ki*err)+ai; |
salvarear | 0:1fe45e27a3c7 | 155 | |
salvarear | 0:1fe45e27a3c7 | 156 | ad = kd*(err-err_v); |
salvarear | 0:1fe45e27a3c7 | 157 | pid = (ap+ai+ad); |
salvarear | 0:1fe45e27a3c7 | 158 | |
salvarear | 0:1fe45e27a3c7 | 159 | if (pid > 999){ |
salvarear | 0:1fe45e27a3c7 | 160 | pid=1000; |
salvarear | 0:1fe45e27a3c7 | 161 | } |
salvarear | 0:1fe45e27a3c7 | 162 | |
salvarear | 0:1fe45e27a3c7 | 163 | wait(.5); |
salvarear | 0:1fe45e27a3c7 | 164 | lcd.locate(2,0); |
salvarear | 0:1fe45e27a3c7 | 165 | lcd.printf("%d",err); |
salvarear | 0:1fe45e27a3c7 | 166 | lcd.locate(10,0); |
salvarear | 0:1fe45e27a3c7 | 167 | lcd.printf("%d",med); |
salvarear | 0:1fe45e27a3c7 | 168 | lcd.locate(2,1); |
salvarear | 0:1fe45e27a3c7 | 169 | lcd.printf("%d",sp); |
salvarear | 0:1fe45e27a3c7 | 170 | lcd.locate(10,1); |
salvarear | 0:1fe45e27a3c7 | 171 | lcd.printf("%d",pid); |
salvarear | 0:1fe45e27a3c7 | 172 | err_v = err; |
salvarear | 0:1fe45e27a3c7 | 173 | |
salvarear | 0:1fe45e27a3c7 | 174 | } |
salvarear | 0:1fe45e27a3c7 | 175 | } |