graphical interface for a PID controller
Dependencies: DebounceIn TextLCD mbed
main.cpp@0:527c9de31b3c, 2013-10-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |