Configuración Encoder y Display. Movimiento entre variables PID y visualización en pantalla LCD Juan Salvador Payares Ernesto Guevara
Dependencies: QEI TextLCD mbed
Diff: main.cpp
- Revision:
- 0:f705e4de51eb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed May 07 16:25:34 2014 +0000 @@ -0,0 +1,227 @@ +#include "mbed.h" +#include "QEI.h" +#include "TextLCD.h" + +//AnalogIn Vin(PTC2); +TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 +QEI encoder (PTD6, PTD7, PTA17, 624); +AnalogIn Vin(PTB0);//Voltaje de alimentación +DigitalOut sound(PTC5); //Salida de Audio Digital +AnalogOut Vout(PTE30); //Marcar la salida analógica +DigitalIn button3(PTA17); +int i; +//codigos movimiento del curzor + + //int C1=0x0E; // solo muestra el cursor +int C2=0x18; // desplaza izquierda +int C3=0x1A; // desplaza derecha +int C4=0x0C; // quito cursor bajo +int C1=0x0F; +int err, med, yr, pid, ap, ai, ad, err_v, cambio=0, diferencia=0; +int spnum=0,kinum=0,kpnum=0,kdnum=0,pos=1; +int flagt=0; +Timer t; + +int main() +{ + lcd.cls(); // Borrar Pantalla + lcd.writeCommand(C1);//escribimos un comando segun el manual del modulo LCD + + lcd.locate(8,0); + lcd.printf("Kp=%d",kpnum); + lcd.locate(0,1); + lcd.printf("Ki=%d",kinum); + lcd.locate(8,1); + lcd.printf("Kd=%d",kdnum); + lcd.locate(0,0); + lcd.printf("Sp=%d",spnum); + + while(1) + { + //lcd.locate(8,0); + //lcd.printf("Kp=%d",encoder.getPulses()); + //wait(.5); + + diferencia=encoder.getPulses()-cambio; + cambio=encoder.getPulses(); + + if (diferencia==0) + { + //nada + } + else if(diferencia>0) + { + if(pos==1) + { + if(spnum+diferencia>=999) + { + spnum=999; + lcd.locate(3,0); + lcd.printf(" "); + lcd.locate(3,0); + lcd.printf("%d", spnum); + } + else + { + spnum+=diferencia; + lcd.locate(3,0); + lcd.printf("%d", spnum); + } + } + else if(pos==2) + { + if(kpnum+diferencia>=999) + { + kpnum=999; + lcd.locate(11,0); + lcd.printf(" "); + lcd.locate(11,0); + lcd.printf("%d", kpnum); + } + else + { + kpnum+=diferencia; + lcd.locate(11,0); + lcd.printf("%d", kpnum); + } + } + else if(pos==3) + { + if(kinum+diferencia>=999) + { + kinum=999; + lcd.locate(3,1); + lcd.printf(" "); + lcd.locate(3,1); + lcd.printf("%d", kinum); + } + else + { + kinum+=diferencia; + lcd.locate(3,1); + lcd.printf("%d", kinum); + } + } + else if(pos==4) + { + if(kdnum+diferencia>=999) + { + kdnum=999; + lcd.locate(11,1); + lcd.printf(" "); + lcd.locate(11,1); + lcd.printf("%d", kdnum); + } + else + { + kdnum+=diferencia; + lcd.locate(11,1); + lcd.printf("%d", kdnum); + } + } + } + + else if(diferencia<0) + { + if(pos==1) + { + if(spnum+diferencia<0) + { + //No ocurre nada + } + else + { + spnum+=diferencia; + lcd.locate(3,0); + lcd.printf(" "); + lcd.locate(3,0); + lcd.printf("%d", spnum); + } + } + else if(pos==2) + { + if(kpnum+diferencia<0) + { + //No ocurre nada + } + else + { + kpnum+=diferencia; + lcd.locate(11,0); + lcd.printf(" "); + lcd.locate(11,0); + lcd.printf("%d", kpnum); + } + } + else if(pos==3) + { + if(kinum+diferencia<0) + { + //No ocurre nada + } + else + { + kinum+=diferencia; + lcd.locate(3,1); + lcd.printf(" "); + lcd.locate(3,1); + lcd.printf("%d", kinum); + } + } + else if(pos==4) + { + if(kdnum+diferencia<0) + { + //No ocurre nada + } + else + { + kdnum+=diferencia; + lcd.locate(11,1); + lcd.printf(" "); + lcd.locate(11,1); + lcd.printf("%d", kdnum); + } + } + } + + if (!button3) + { + { + for(i=1; i<= 100; ++i){ //ONDA CUADRADA, OSCILACIONES A 10 KHZ.... A VER SI FUNCIONA + sound = 0; + wait(0.00015); // Medio ciclo de dureza Arriba + sound=1; + wait(0.0005); // Medio ciclo Abajo + } + if(pos==4) + { + pos=1; + lcd.locate(3,0); + lcd.printf("%d", spnum); + } + else if (pos==1) + { + pos++; + lcd.locate(11,0); + lcd.printf("%d", kpnum); + } + else if(pos==2) + { + pos++; + lcd.locate(3,1); + lcd.printf("%d", kinum); + } + else if(pos==3) + { + pos++; + lcd.locate(11,1); + lcd.printf("%d", kdnum); + } + wait(0.25); + + } + + } + } +} \ No newline at end of file