Configuración Encoder y Display. Movimiento entre variables PID y visualización en pantalla LCD Juan Salvador Payares Ernesto Guevara

Dependencies:   QEI TextLCD mbed

Committer:
payarito32
Date:
Wed May 07 16:25:34 2014 +0000
Revision:
0:f705e4de51eb
Tarea 4 - Configuraci?n Encoder y LCD; ; Juan Salvador Payares; Ernesto Guevara; ; Configuraci?n movimiento Encoder entre variables controlador PI; Visualizaci?n en Display LCD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
payarito32 0:f705e4de51eb 1 #include "mbed.h"
payarito32 0:f705e4de51eb 2 #include "QEI.h"
payarito32 0:f705e4de51eb 3 #include "TextLCD.h"
payarito32 0:f705e4de51eb 4
payarito32 0:f705e4de51eb 5 //AnalogIn Vin(PTC2);
payarito32 0:f705e4de51eb 6 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
payarito32 0:f705e4de51eb 7 QEI encoder (PTD6, PTD7, PTA17, 624);
payarito32 0:f705e4de51eb 8 AnalogIn Vin(PTB0);//Voltaje de alimentación
payarito32 0:f705e4de51eb 9 DigitalOut sound(PTC5); //Salida de Audio Digital
payarito32 0:f705e4de51eb 10 AnalogOut Vout(PTE30); //Marcar la salida analógica
payarito32 0:f705e4de51eb 11 DigitalIn button3(PTA17);
payarito32 0:f705e4de51eb 12 int i;
payarito32 0:f705e4de51eb 13 //codigos movimiento del curzor
payarito32 0:f705e4de51eb 14
payarito32 0:f705e4de51eb 15 //int C1=0x0E; // solo muestra el cursor
payarito32 0:f705e4de51eb 16 int C2=0x18; // desplaza izquierda
payarito32 0:f705e4de51eb 17 int C3=0x1A; // desplaza derecha
payarito32 0:f705e4de51eb 18 int C4=0x0C; // quito cursor bajo
payarito32 0:f705e4de51eb 19 int C1=0x0F;
payarito32 0:f705e4de51eb 20 int err, med, yr, pid, ap, ai, ad, err_v, cambio=0, diferencia=0;
payarito32 0:f705e4de51eb 21 int spnum=0,kinum=0,kpnum=0,kdnum=0,pos=1;
payarito32 0:f705e4de51eb 22 int flagt=0;
payarito32 0:f705e4de51eb 23 Timer t;
payarito32 0:f705e4de51eb 24
payarito32 0:f705e4de51eb 25 int main()
payarito32 0:f705e4de51eb 26 {
payarito32 0:f705e4de51eb 27 lcd.cls(); // Borrar Pantalla
payarito32 0:f705e4de51eb 28 lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD
payarito32 0:f705e4de51eb 29
payarito32 0:f705e4de51eb 30 lcd.locate(8,0);
payarito32 0:f705e4de51eb 31 lcd.printf("Kp=%d",kpnum);
payarito32 0:f705e4de51eb 32 lcd.locate(0,1);
payarito32 0:f705e4de51eb 33 lcd.printf("Ki=%d",kinum);
payarito32 0:f705e4de51eb 34 lcd.locate(8,1);
payarito32 0:f705e4de51eb 35 lcd.printf("Kd=%d",kdnum);
payarito32 0:f705e4de51eb 36 lcd.locate(0,0);
payarito32 0:f705e4de51eb 37 lcd.printf("Sp=%d",spnum);
payarito32 0:f705e4de51eb 38
payarito32 0:f705e4de51eb 39 while(1)
payarito32 0:f705e4de51eb 40 {
payarito32 0:f705e4de51eb 41 //lcd.locate(8,0);
payarito32 0:f705e4de51eb 42 //lcd.printf("Kp=%d",encoder.getPulses());
payarito32 0:f705e4de51eb 43 //wait(.5);
payarito32 0:f705e4de51eb 44
payarito32 0:f705e4de51eb 45 diferencia=encoder.getPulses()-cambio;
payarito32 0:f705e4de51eb 46 cambio=encoder.getPulses();
payarito32 0:f705e4de51eb 47
payarito32 0:f705e4de51eb 48 if (diferencia==0)
payarito32 0:f705e4de51eb 49 {
payarito32 0:f705e4de51eb 50 //nada
payarito32 0:f705e4de51eb 51 }
payarito32 0:f705e4de51eb 52 else if(diferencia>0)
payarito32 0:f705e4de51eb 53 {
payarito32 0:f705e4de51eb 54 if(pos==1)
payarito32 0:f705e4de51eb 55 {
payarito32 0:f705e4de51eb 56 if(spnum+diferencia>=999)
payarito32 0:f705e4de51eb 57 {
payarito32 0:f705e4de51eb 58 spnum=999;
payarito32 0:f705e4de51eb 59 lcd.locate(3,0);
payarito32 0:f705e4de51eb 60 lcd.printf(" ");
payarito32 0:f705e4de51eb 61 lcd.locate(3,0);
payarito32 0:f705e4de51eb 62 lcd.printf("%d", spnum);
payarito32 0:f705e4de51eb 63 }
payarito32 0:f705e4de51eb 64 else
payarito32 0:f705e4de51eb 65 {
payarito32 0:f705e4de51eb 66 spnum+=diferencia;
payarito32 0:f705e4de51eb 67 lcd.locate(3,0);
payarito32 0:f705e4de51eb 68 lcd.printf("%d", spnum);
payarito32 0:f705e4de51eb 69 }
payarito32 0:f705e4de51eb 70 }
payarito32 0:f705e4de51eb 71 else if(pos==2)
payarito32 0:f705e4de51eb 72 {
payarito32 0:f705e4de51eb 73 if(kpnum+diferencia>=999)
payarito32 0:f705e4de51eb 74 {
payarito32 0:f705e4de51eb 75 kpnum=999;
payarito32 0:f705e4de51eb 76 lcd.locate(11,0);
payarito32 0:f705e4de51eb 77 lcd.printf(" ");
payarito32 0:f705e4de51eb 78 lcd.locate(11,0);
payarito32 0:f705e4de51eb 79 lcd.printf("%d", kpnum);
payarito32 0:f705e4de51eb 80 }
payarito32 0:f705e4de51eb 81 else
payarito32 0:f705e4de51eb 82 {
payarito32 0:f705e4de51eb 83 kpnum+=diferencia;
payarito32 0:f705e4de51eb 84 lcd.locate(11,0);
payarito32 0:f705e4de51eb 85 lcd.printf("%d", kpnum);
payarito32 0:f705e4de51eb 86 }
payarito32 0:f705e4de51eb 87 }
payarito32 0:f705e4de51eb 88 else if(pos==3)
payarito32 0:f705e4de51eb 89 {
payarito32 0:f705e4de51eb 90 if(kinum+diferencia>=999)
payarito32 0:f705e4de51eb 91 {
payarito32 0:f705e4de51eb 92 kinum=999;
payarito32 0:f705e4de51eb 93 lcd.locate(3,1);
payarito32 0:f705e4de51eb 94 lcd.printf(" ");
payarito32 0:f705e4de51eb 95 lcd.locate(3,1);
payarito32 0:f705e4de51eb 96 lcd.printf("%d", kinum);
payarito32 0:f705e4de51eb 97 }
payarito32 0:f705e4de51eb 98 else
payarito32 0:f705e4de51eb 99 {
payarito32 0:f705e4de51eb 100 kinum+=diferencia;
payarito32 0:f705e4de51eb 101 lcd.locate(3,1);
payarito32 0:f705e4de51eb 102 lcd.printf("%d", kinum);
payarito32 0:f705e4de51eb 103 }
payarito32 0:f705e4de51eb 104 }
payarito32 0:f705e4de51eb 105 else if(pos==4)
payarito32 0:f705e4de51eb 106 {
payarito32 0:f705e4de51eb 107 if(kdnum+diferencia>=999)
payarito32 0:f705e4de51eb 108 {
payarito32 0:f705e4de51eb 109 kdnum=999;
payarito32 0:f705e4de51eb 110 lcd.locate(11,1);
payarito32 0:f705e4de51eb 111 lcd.printf(" ");
payarito32 0:f705e4de51eb 112 lcd.locate(11,1);
payarito32 0:f705e4de51eb 113 lcd.printf("%d", kdnum);
payarito32 0:f705e4de51eb 114 }
payarito32 0:f705e4de51eb 115 else
payarito32 0:f705e4de51eb 116 {
payarito32 0:f705e4de51eb 117 kdnum+=diferencia;
payarito32 0:f705e4de51eb 118 lcd.locate(11,1);
payarito32 0:f705e4de51eb 119 lcd.printf("%d", kdnum);
payarito32 0:f705e4de51eb 120 }
payarito32 0:f705e4de51eb 121 }
payarito32 0:f705e4de51eb 122 }
payarito32 0:f705e4de51eb 123
payarito32 0:f705e4de51eb 124 else if(diferencia<0)
payarito32 0:f705e4de51eb 125 {
payarito32 0:f705e4de51eb 126 if(pos==1)
payarito32 0:f705e4de51eb 127 {
payarito32 0:f705e4de51eb 128 if(spnum+diferencia<0)
payarito32 0:f705e4de51eb 129 {
payarito32 0:f705e4de51eb 130 //No ocurre nada
payarito32 0:f705e4de51eb 131 }
payarito32 0:f705e4de51eb 132 else
payarito32 0:f705e4de51eb 133 {
payarito32 0:f705e4de51eb 134 spnum+=diferencia;
payarito32 0:f705e4de51eb 135 lcd.locate(3,0);
payarito32 0:f705e4de51eb 136 lcd.printf(" ");
payarito32 0:f705e4de51eb 137 lcd.locate(3,0);
payarito32 0:f705e4de51eb 138 lcd.printf("%d", spnum);
payarito32 0:f705e4de51eb 139 }
payarito32 0:f705e4de51eb 140 }
payarito32 0:f705e4de51eb 141 else if(pos==2)
payarito32 0:f705e4de51eb 142 {
payarito32 0:f705e4de51eb 143 if(kpnum+diferencia<0)
payarito32 0:f705e4de51eb 144 {
payarito32 0:f705e4de51eb 145 //No ocurre nada
payarito32 0:f705e4de51eb 146 }
payarito32 0:f705e4de51eb 147 else
payarito32 0:f705e4de51eb 148 {
payarito32 0:f705e4de51eb 149 kpnum+=diferencia;
payarito32 0:f705e4de51eb 150 lcd.locate(11,0);
payarito32 0:f705e4de51eb 151 lcd.printf(" ");
payarito32 0:f705e4de51eb 152 lcd.locate(11,0);
payarito32 0:f705e4de51eb 153 lcd.printf("%d", kpnum);
payarito32 0:f705e4de51eb 154 }
payarito32 0:f705e4de51eb 155 }
payarito32 0:f705e4de51eb 156 else if(pos==3)
payarito32 0:f705e4de51eb 157 {
payarito32 0:f705e4de51eb 158 if(kinum+diferencia<0)
payarito32 0:f705e4de51eb 159 {
payarito32 0:f705e4de51eb 160 //No ocurre nada
payarito32 0:f705e4de51eb 161 }
payarito32 0:f705e4de51eb 162 else
payarito32 0:f705e4de51eb 163 {
payarito32 0:f705e4de51eb 164 kinum+=diferencia;
payarito32 0:f705e4de51eb 165 lcd.locate(3,1);
payarito32 0:f705e4de51eb 166 lcd.printf(" ");
payarito32 0:f705e4de51eb 167 lcd.locate(3,1);
payarito32 0:f705e4de51eb 168 lcd.printf("%d", kinum);
payarito32 0:f705e4de51eb 169 }
payarito32 0:f705e4de51eb 170 }
payarito32 0:f705e4de51eb 171 else if(pos==4)
payarito32 0:f705e4de51eb 172 {
payarito32 0:f705e4de51eb 173 if(kdnum+diferencia<0)
payarito32 0:f705e4de51eb 174 {
payarito32 0:f705e4de51eb 175 //No ocurre nada
payarito32 0:f705e4de51eb 176 }
payarito32 0:f705e4de51eb 177 else
payarito32 0:f705e4de51eb 178 {
payarito32 0:f705e4de51eb 179 kdnum+=diferencia;
payarito32 0:f705e4de51eb 180 lcd.locate(11,1);
payarito32 0:f705e4de51eb 181 lcd.printf(" ");
payarito32 0:f705e4de51eb 182 lcd.locate(11,1);
payarito32 0:f705e4de51eb 183 lcd.printf("%d", kdnum);
payarito32 0:f705e4de51eb 184 }
payarito32 0:f705e4de51eb 185 }
payarito32 0:f705e4de51eb 186 }
payarito32 0:f705e4de51eb 187
payarito32 0:f705e4de51eb 188 if (!button3)
payarito32 0:f705e4de51eb 189 {
payarito32 0:f705e4de51eb 190 {
payarito32 0:f705e4de51eb 191 for(i=1; i<= 100; ++i){ //ONDA CUADRADA, OSCILACIONES A 10 KHZ.... A VER SI FUNCIONA
payarito32 0:f705e4de51eb 192 sound = 0;
payarito32 0:f705e4de51eb 193 wait(0.00015); // Medio ciclo de dureza Arriba
payarito32 0:f705e4de51eb 194 sound=1;
payarito32 0:f705e4de51eb 195 wait(0.0005); // Medio ciclo Abajo
payarito32 0:f705e4de51eb 196 }
payarito32 0:f705e4de51eb 197 if(pos==4)
payarito32 0:f705e4de51eb 198 {
payarito32 0:f705e4de51eb 199 pos=1;
payarito32 0:f705e4de51eb 200 lcd.locate(3,0);
payarito32 0:f705e4de51eb 201 lcd.printf("%d", spnum);
payarito32 0:f705e4de51eb 202 }
payarito32 0:f705e4de51eb 203 else if (pos==1)
payarito32 0:f705e4de51eb 204 {
payarito32 0:f705e4de51eb 205 pos++;
payarito32 0:f705e4de51eb 206 lcd.locate(11,0);
payarito32 0:f705e4de51eb 207 lcd.printf("%d", kpnum);
payarito32 0:f705e4de51eb 208 }
payarito32 0:f705e4de51eb 209 else if(pos==2)
payarito32 0:f705e4de51eb 210 {
payarito32 0:f705e4de51eb 211 pos++;
payarito32 0:f705e4de51eb 212 lcd.locate(3,1);
payarito32 0:f705e4de51eb 213 lcd.printf("%d", kinum);
payarito32 0:f705e4de51eb 214 }
payarito32 0:f705e4de51eb 215 else if(pos==3)
payarito32 0:f705e4de51eb 216 {
payarito32 0:f705e4de51eb 217 pos++;
payarito32 0:f705e4de51eb 218 lcd.locate(11,1);
payarito32 0:f705e4de51eb 219 lcd.printf("%d", kdnum);
payarito32 0:f705e4de51eb 220 }
payarito32 0:f705e4de51eb 221 wait(0.25);
payarito32 0:f705e4de51eb 222
payarito32 0:f705e4de51eb 223 }
payarito32 0:f705e4de51eb 224
payarito32 0:f705e4de51eb 225 }
payarito32 0:f705e4de51eb 226 }
payarito32 0:f705e4de51eb 227 }