d

Dependencies:   Debounced TextLCD mbed

Committer:
salvarear
Date:
Thu Dec 12 20:41:26 2013 +0000
Revision:
0:1fe45e27a3c7
d

Who changed what in which revision?

UserRevisionLine numberNew 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 }