d
Dependencies: Debounced TextLCD mbed
main.cpp
- Committer:
- salvarear
- Date:
- 2013-12-12
- Revision:
- 0:1fe45e27a3c7
File content as of revision 0:1fe45e27a3c7:
#include "mbed.h" #include "DebouncedIn.h" #include "TextLCD.h" AnalogIn Vin(PTC2); TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 //documentacion de las librerias y disposicion de pines DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DebouncedIn b1(PTC12); //boton incrementa. DebouncedIn b2(PTC13); //boton decrementa. DebouncedIn b3(PTB8); //boton cambio menu. DebouncedIn b4(PTB9); //boton reset. int C1=0x0E; // solo muestra el cursor int C2=0x18; // desplaza el cursor a la izquierda int C3=0x1A; // desplaza el cursor derecha int C4=0x0C; // quita el cursor bajo int a; int b; int kp, ki, kd, sp, err, med, pid, ap, ai, ad, err_v; //revisar antes de la primera tarear(PID) int main() { lcd.cls(); lcd.printf("Sp%d",sp); //ubicacion de las variables en la pantalla lcd.locate(8,0); lcd.printf("Kp%d",kp); lcd.locate(0,1); lcd.printf("Ki%d",ki); lcd.locate(8,1); lcd.printf("Kd%d",kd); lcd.writeCommand(C1); lcd.locate(0,0); lcd.printf("Sp%d",sp); while(1) { //inicio cliclos del pid if (b1.falling()) { // incrementa led1 =!led1; ++a; lcd.locate(6,0); lcd.printf("%d", a); } if (b2.falling()) { //decrementa led2 =!led2; --a; lcd.locate(6,0); lcd.printf("%d", a); } if (b3.falling()) { //botones if (b==0){ lcd.locate(2,0); lcd.printf("%d",sp); if (b1.falling()) { ++sp; } if (b2.falling()) { --sp; } } if (b==1) { lcd.locate(10,0); lcd.printf("%d",kp); if (b1.falling()){ ++kp; } if (b2.falling()) { --kp; } } if (b==2) { lcd.locate(2,1); lcd.printf("%d",ki); if (b1.falling()){ ++ki; } if (b2.falling()){ --ki; } } if (b==3) { lcd.locate(10,1); lcd.printf("%d",kd); if (b1.falling()){ ++kd; } if (b2.falling()){ --kd else(b==4) { b=0; } } if (b4.falling()){ break; } } } lcd.writeCommand(C4); lcd.cls(); lcd.printf(" Guardando Datos!"); wait(2); lcd.printf(" Espere...."); wait(2); lcd.cls(); lcd.printf("Iniciando PID"); wait(2); lcd.cls(); lcd.printf("Er%d",err); lcd.locate(8,0); lcd.printf("Me%d",med); lcd.locate(0,1); lcd.printf("Sp%d",sp); lcd.locate(8,1); lcd.printf("Co%d",pid); wait(5); void star_patch(void){ //funcion que imprime los caracteres que no van a variar en el display lcd.printf("SP="); lcd.locate(7,0); lcd.printf("Kp="); lcd.locate(0,1); lcd.printf("Ki="); lcd.locate(7,1); lcd.printf("Kd="); lcd.locate(3,0); } int main(){ star_patch(); while(1){ if(k==3)k=0; if(salto.read()==0){ def_posicion(k); k++; } else if(mas.read()==0){ incremento(k); } else if(menos.read()==0){ decremento(k); } } } //calculo del pid while(1) { err = (sp-med); ap = kp*err; ai =(ki*err)+ai; ad = kd*(err-err_v); pid = (ap+ai+ad); if (pid > 999){ pid=1000; } wait(.5); lcd.locate(2,0); lcd.printf("%d",err); lcd.locate(10,0); lcd.printf("%d",med); lcd.locate(2,1); lcd.printf("%d",sp); lcd.locate(10,1); lcd.printf("%d",pid); err_v = err; } }