graphical interface for a PID controller

Dependencies:   DebounceIn TextLCD mbed

Committer:
salondonog
Date:
Fri Oct 11 05:28:33 2013 +0000
Revision:
0:527c9de31b3c
GUI for a PID controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
salondonog 0:527c9de31b3c 1 #include "mbed.h"
salondonog 0:527c9de31b3c 2 #include "TextLCD.h"
salondonog 0:527c9de31b3c 3 #include "DebounceIn.h"
salondonog 0:527c9de31b3c 4
salondonog 0:527c9de31b3c 5 TextLCD lcd(PTE0,PTE1,PTE2,PTE3,PTE4,PTE5); //configura los puestos PTE0,PTE1,PTE2,PTE3,PTE4,PTE5, donde se conectara el LCD 16x2
salondonog 0:527c9de31b3c 6 DebounceIn mas(PTA1);
salondonog 0:527c9de31b3c 7 DebounceIn menos(PTA2);
salondonog 0:527c9de31b3c 8 DebounceIn salto(PTA3);
salondonog 0:527c9de31b3c 9
salondonog 0:527c9de31b3c 10 int s=0; //set point
salondonog 0:527c9de31b3c 11 int p=0; //ganancia proporcional
salondonog 0:527c9de31b3c 12 int i=0; //ganancia integral
salondonog 0:527c9de31b3c 13 int d=0; //ganancia derivativa
salondonog 0:527c9de31b3c 14 int k=1; //variable de control}
salondonog 0:527c9de31b3c 15
salondonog 0:527c9de31b3c 16 void def_posicion(int h){
salondonog 0:527c9de31b3c 17 if (h==0){
salondonog 0:527c9de31b3c 18 lcd.locate(3,0);
salondonog 0:527c9de31b3c 19 }
salondonog 0:527c9de31b3c 20 else if(h==1){
salondonog 0:527c9de31b3c 21 lcd.locate(10,0);
salondonog 0:527c9de31b3c 22 }
salondonog 0:527c9de31b3c 23 else if (h==2){
salondonog 0:527c9de31b3c 24 lcd.locate(3,1);
salondonog 0:527c9de31b3c 25 }
salondonog 0:527c9de31b3c 26 else {
salondonog 0:527c9de31b3c 27 lcd.locate(10,1);
salondonog 0:527c9de31b3c 28 }
salondonog 0:527c9de31b3c 29 }
salondonog 0:527c9de31b3c 30 void decremento(int u){ //Funcion que decrementa los valores
salondonog 0:527c9de31b3c 31 if(u==0){
salondonog 0:527c9de31b3c 32 if(s<=0){
salondonog 0:527c9de31b3c 33 s=0;
salondonog 0:527c9de31b3c 34 lcd.printf("%d",s);
salondonog 0:527c9de31b3c 35 }
salondonog 0:527c9de31b3c 36 else{
salondonog 0:527c9de31b3c 37 s--;
salondonog 0:527c9de31b3c 38 lcd.printf("%d",s);
salondonog 0:527c9de31b3c 39 }
salondonog 0:527c9de31b3c 40 }
salondonog 0:527c9de31b3c 41 else if(u==1){
salondonog 0:527c9de31b3c 42 if(p<=0){
salondonog 0:527c9de31b3c 43 p=0;
salondonog 0:527c9de31b3c 44 lcd.printf("%d",p);
salondonog 0:527c9de31b3c 45 }
salondonog 0:527c9de31b3c 46 else{
salondonog 0:527c9de31b3c 47 p--;
salondonog 0:527c9de31b3c 48 lcd.printf("%d",p);
salondonog 0:527c9de31b3c 49 }
salondonog 0:527c9de31b3c 50 }
salondonog 0:527c9de31b3c 51 else if(u==2){
salondonog 0:527c9de31b3c 52 if(i<=0){
salondonog 0:527c9de31b3c 53 i=0;
salondonog 0:527c9de31b3c 54 lcd.printf("%d",i);
salondonog 0:527c9de31b3c 55 }
salondonog 0:527c9de31b3c 56 else{
salondonog 0:527c9de31b3c 57 i--;
salondonog 0:527c9de31b3c 58 lcd.printf("%d",i);
salondonog 0:527c9de31b3c 59 }
salondonog 0:527c9de31b3c 60 }
salondonog 0:527c9de31b3c 61 else if(d<=0){
salondonog 0:527c9de31b3c 62 d=0;
salondonog 0:527c9de31b3c 63 lcd.printf("%d",d);
salondonog 0:527c9de31b3c 64 }
salondonog 0:527c9de31b3c 65 else {
salondonog 0:527c9de31b3c 66 d--;
salondonog 0:527c9de31b3c 67 lcd.printf("%d",d);
salondonog 0:527c9de31b3c 68 }
salondonog 0:527c9de31b3c 69 }
salondonog 0:527c9de31b3c 70
salondonog 0:527c9de31b3c 71 void incremento(int h){ //Funcion que incremente los valores
salondonog 0:527c9de31b3c 72 if(h==0){
salondonog 0:527c9de31b3c 73 s++;
salondonog 0:527c9de31b3c 74 lcd.printf("%d",s);
salondonog 0:527c9de31b3c 75 }
salondonog 0:527c9de31b3c 76 else if(h==1){
salondonog 0:527c9de31b3c 77 p++;
salondonog 0:527c9de31b3c 78 lcd.printf("%d",p);
salondonog 0:527c9de31b3c 79 }
salondonog 0:527c9de31b3c 80 else if(h==2){
salondonog 0:527c9de31b3c 81 i++;
salondonog 0:527c9de31b3c 82 lcd.printf("%d",i);
salondonog 0:527c9de31b3c 83 }
salondonog 0:527c9de31b3c 84 else{
salondonog 0:527c9de31b3c 85 d++;
salondonog 0:527c9de31b3c 86 lcd.printf("%d",d);
salondonog 0:527c9de31b3c 87 }
salondonog 0:527c9de31b3c 88
salondonog 0:527c9de31b3c 89 }
salondonog 0:527c9de31b3c 90
salondonog 0:527c9de31b3c 91 void star_patch(void){ //funcion que imprime los caracteres que no van a variar en el display
salondonog 0:527c9de31b3c 92 lcd.printf("SP=");
salondonog 0:527c9de31b3c 93 lcd.locate(7,0);
salondonog 0:527c9de31b3c 94 lcd.printf("Kp=");
salondonog 0:527c9de31b3c 95 lcd.locate(0,1);
salondonog 0:527c9de31b3c 96 lcd.printf("Ki=");
salondonog 0:527c9de31b3c 97 lcd.locate(7,1);
salondonog 0:527c9de31b3c 98 lcd.printf("Kd=");
salondonog 0:527c9de31b3c 99 lcd.locate(3,0);
salondonog 0:527c9de31b3c 100 }
salondonog 0:527c9de31b3c 101
salondonog 0:527c9de31b3c 102 int main(){
salondonog 0:527c9de31b3c 103 star_patch();
salondonog 0:527c9de31b3c 104 while(1){
salondonog 0:527c9de31b3c 105 if(k==3)k=0;
salondonog 0:527c9de31b3c 106 if(salto.read()==0){
salondonog 0:527c9de31b3c 107 def_posicion(k);
salondonog 0:527c9de31b3c 108 k++;
salondonog 0:527c9de31b3c 109 }
salondonog 0:527c9de31b3c 110 else if(mas.read()==0){
salondonog 0:527c9de31b3c 111 incremento(k);
salondonog 0:527c9de31b3c 112 }
salondonog 0:527c9de31b3c 113 else if(menos.read()==0){
salondonog 0:527c9de31b3c 114 decremento(k);
salondonog 0:527c9de31b3c 115 }
salondonog 0:527c9de31b3c 116 }
salondonog 0:527c9de31b3c 117 }