![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Permite la configuración de los parámetros Kp, Ki Kd y Sp en un Display LCD 16x2 en un teclado matricial 4x4.
Dependencies: TextLCD keypad mbed
main.cpp@0:626b11d510b7, 2016-05-17 (annotated)
- Committer:
- SSJprocesa
- Date:
- Tue May 17 16:54:56 2016 +0000
- Revision:
- 0:626b11d510b7
Permite la configuraci?n de los par?metros Kp, Ki Kd y Sp en un Display LCD 16x2 en un teclado matricial 4x4.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SSJprocesa | 0:626b11d510b7 | 1 | #include "mbed.h" |
SSJprocesa | 0:626b11d510b7 | 2 | #include "TextLCD.h" |
SSJprocesa | 0:626b11d510b7 | 3 | #include "Keypad.h" |
SSJprocesa | 0:626b11d510b7 | 4 | |
SSJprocesa | 0:626b11d510b7 | 5 | TextLCD lcd(PTC9, PTC8, PTA5, PTA4, PTA12, PTD4); // rs, e, d4-d7 |
SSJprocesa | 0:626b11d510b7 | 6 | int long g=0,p=0,i=0,d=0,s=0,chan=0,num=0; |
SSJprocesa | 0:626b11d510b7 | 7 | int c=1,b=1,a=15,uno=0,dos=0,tre=0,cua=0,aux=0,jod=0,pla=0,aste=0; |
SSJprocesa | 0:626b11d510b7 | 8 | |
SSJprocesa | 0:626b11d510b7 | 9 | int Keytable[] = { 1, 2, 3, 10, // r0 |
SSJprocesa | 0:626b11d510b7 | 10 | 4, 5, 6, 11, // r1 |
SSJprocesa | 0:626b11d510b7 | 11 | 7, 8, 9, 12, // r2 |
SSJprocesa | 0:626b11d510b7 | 12 | 20,0, 21, 13 // r3 |
SSJprocesa | 0:626b11d510b7 | 13 | }; |
SSJprocesa | 0:626b11d510b7 | 14 | |
SSJprocesa | 0:626b11d510b7 | 15 | |
SSJprocesa | 0:626b11d510b7 | 16 | uint32_t cbAfterInput(uint32_t index) { |
SSJprocesa | 0:626b11d510b7 | 17 | a = index; |
SSJprocesa | 0:626b11d510b7 | 18 | return 0; |
SSJprocesa | 0:626b11d510b7 | 19 | } |
SSJprocesa | 0:626b11d510b7 | 20 | |
SSJprocesa | 0:626b11d510b7 | 21 | void limpiar() |
SSJprocesa | 0:626b11d510b7 | 22 | { |
SSJprocesa | 0:626b11d510b7 | 23 | c=1,a=15,uno=0,dos=0,tre=0,cua=0,aux=0,b=1,jod=0,pla=0; |
SSJprocesa | 0:626b11d510b7 | 24 | } |
SSJprocesa | 0:626b11d510b7 | 25 | |
SSJprocesa | 0:626b11d510b7 | 26 | void nds() |
SSJprocesa | 0:626b11d510b7 | 27 | { |
SSJprocesa | 0:626b11d510b7 | 28 | if(aste==0){lcd.locate((3+aux),0);} |
SSJprocesa | 0:626b11d510b7 | 29 | if(aste==1){lcd.locate((11+aux),0);} |
SSJprocesa | 0:626b11d510b7 | 30 | if(aste==2){lcd.locate((3+aux),1);} |
SSJprocesa | 0:626b11d510b7 | 31 | if(aste==3){lcd.locate((11+aux),1);} |
SSJprocesa | 0:626b11d510b7 | 32 | } |
SSJprocesa | 0:626b11d510b7 | 33 | |
SSJprocesa | 0:626b11d510b7 | 34 | void mostrar () |
SSJprocesa | 0:626b11d510b7 | 35 | { |
SSJprocesa | 0:626b11d510b7 | 36 | lcd.locate(0,0); |
SSJprocesa | 0:626b11d510b7 | 37 | lcd.printf("Kp=%Ld", p); |
SSJprocesa | 0:626b11d510b7 | 38 | lcd.locate(8,0); |
SSJprocesa | 0:626b11d510b7 | 39 | lcd.printf("Ki=%Ld", i); |
SSJprocesa | 0:626b11d510b7 | 40 | lcd.locate(0,1); |
SSJprocesa | 0:626b11d510b7 | 41 | lcd.printf("Kd=%Ld", d); |
SSJprocesa | 0:626b11d510b7 | 42 | lcd.locate(8,1); |
SSJprocesa | 0:626b11d510b7 | 43 | lcd.printf("Sp=%Ld", s); |
SSJprocesa | 0:626b11d510b7 | 44 | } |
SSJprocesa | 0:626b11d510b7 | 45 | |
SSJprocesa | 0:626b11d510b7 | 46 | void titi() |
SSJprocesa | 0:626b11d510b7 | 47 | { |
SSJprocesa | 0:626b11d510b7 | 48 | jod++; |
SSJprocesa | 0:626b11d510b7 | 49 | if(jod<=1000){ |
SSJprocesa | 0:626b11d510b7 | 50 | nds(); |
SSJprocesa | 0:626b11d510b7 | 51 | lcd.printf ("_"); |
SSJprocesa | 0:626b11d510b7 | 52 | } |
SSJprocesa | 0:626b11d510b7 | 53 | if(jod>=2000){ |
SSJprocesa | 0:626b11d510b7 | 54 | nds(); |
SSJprocesa | 0:626b11d510b7 | 55 | lcd.printf ("%Ld",chan); |
SSJprocesa | 0:626b11d510b7 | 56 | } |
SSJprocesa | 0:626b11d510b7 | 57 | if(jod==3000){jod=0;} |
SSJprocesa | 0:626b11d510b7 | 58 | } |
SSJprocesa | 0:626b11d510b7 | 59 | |
SSJprocesa | 0:626b11d510b7 | 60 | |
SSJprocesa | 0:626b11d510b7 | 61 | int long numero() |
SSJprocesa | 0:626b11d510b7 | 62 | { |
SSJprocesa | 0:626b11d510b7 | 63 | while(b==1&&c==1) |
SSJprocesa | 0:626b11d510b7 | 64 | { |
SSJprocesa | 0:626b11d510b7 | 65 | titi(); |
SSJprocesa | 0:626b11d510b7 | 66 | nds(); |
SSJprocesa | 0:626b11d510b7 | 67 | lcd.printf("%Ld",chan); |
SSJprocesa | 0:626b11d510b7 | 68 | if(Keytable[a]==21){ |
SSJprocesa | 0:626b11d510b7 | 69 | aux++; |
SSJprocesa | 0:626b11d510b7 | 70 | if(aux==4){c=0;aux=3;} |
SSJprocesa | 0:626b11d510b7 | 71 | a=15; |
SSJprocesa | 0:626b11d510b7 | 72 | chan=0;} |
SSJprocesa | 0:626b11d510b7 | 73 | |
SSJprocesa | 0:626b11d510b7 | 74 | if(Keytable[a]==10){b=0;chan=0;} |
SSJprocesa | 0:626b11d510b7 | 75 | if(Keytable[a]!=10&&Keytable[a]!=11&&Keytable[a]!=12&&Keytable[a]!=13&&Keytable[a]!=20&&Keytable[a]!=21&&a!=15) |
SSJprocesa | 0:626b11d510b7 | 76 | { |
SSJprocesa | 0:626b11d510b7 | 77 | chan=Keytable[a]; |
SSJprocesa | 0:626b11d510b7 | 78 | nds(); |
SSJprocesa | 0:626b11d510b7 | 79 | lcd.printf ("%Ld",chan); |
SSJprocesa | 0:626b11d510b7 | 80 | if(chan==50){chan=0;} |
SSJprocesa | 0:626b11d510b7 | 81 | switch(aux){ |
SSJprocesa | 0:626b11d510b7 | 82 | case 0:uno=chan; |
SSJprocesa | 0:626b11d510b7 | 83 | break; |
SSJprocesa | 0:626b11d510b7 | 84 | case 1:dos=chan; |
SSJprocesa | 0:626b11d510b7 | 85 | break; |
SSJprocesa | 0:626b11d510b7 | 86 | case 2:tre=chan; |
SSJprocesa | 0:626b11d510b7 | 87 | break; |
SSJprocesa | 0:626b11d510b7 | 88 | case 3:cua=chan; |
SSJprocesa | 0:626b11d510b7 | 89 | break; |
SSJprocesa | 0:626b11d510b7 | 90 | default : a=15; |
SSJprocesa | 0:626b11d510b7 | 91 | } |
SSJprocesa | 0:626b11d510b7 | 92 | |
SSJprocesa | 0:626b11d510b7 | 93 | a=15; |
SSJprocesa | 0:626b11d510b7 | 94 | |
SSJprocesa | 0:626b11d510b7 | 95 | } |
SSJprocesa | 0:626b11d510b7 | 96 | } |
SSJprocesa | 0:626b11d510b7 | 97 | aux=aux; |
SSJprocesa | 0:626b11d510b7 | 98 | switch(aux) |
SSJprocesa | 0:626b11d510b7 | 99 | { |
SSJprocesa | 0:626b11d510b7 | 100 | case 0: |
SSJprocesa | 0:626b11d510b7 | 101 | uno=uno; |
SSJprocesa | 0:626b11d510b7 | 102 | break; |
SSJprocesa | 0:626b11d510b7 | 103 | case 1: |
SSJprocesa | 0:626b11d510b7 | 104 | uno=uno*10;dos=dos; |
SSJprocesa | 0:626b11d510b7 | 105 | break; |
SSJprocesa | 0:626b11d510b7 | 106 | case 2: |
SSJprocesa | 0:626b11d510b7 | 107 | uno=uno*100;dos=dos*10;tre=tre; |
SSJprocesa | 0:626b11d510b7 | 108 | break; |
SSJprocesa | 0:626b11d510b7 | 109 | case 3: |
SSJprocesa | 0:626b11d510b7 | 110 | uno=uno*1000;dos=dos*100;tre=tre*10;cua=cua; |
SSJprocesa | 0:626b11d510b7 | 111 | break; |
SSJprocesa | 0:626b11d510b7 | 112 | default : aux=0; |
SSJprocesa | 0:626b11d510b7 | 113 | } |
SSJprocesa | 0:626b11d510b7 | 114 | num=uno+dos+tre+cua; |
SSJprocesa | 0:626b11d510b7 | 115 | aux=0; |
SSJprocesa | 0:626b11d510b7 | 116 | return(num); |
SSJprocesa | 0:626b11d510b7 | 117 | } |
SSJprocesa | 0:626b11d510b7 | 118 | |
SSJprocesa | 0:626b11d510b7 | 119 | |
SSJprocesa | 0:626b11d510b7 | 120 | int main() { |
SSJprocesa | 0:626b11d510b7 | 121 | // r0 r1 r2 r3 c0 c1 c2 c3 |
SSJprocesa | 0:626b11d510b7 | 122 | Keypad keypad(PTC11, PTC10, PTC6, PTC5, PTC4, PTC3, PTC0, PTC7); |
SSJprocesa | 0:626b11d510b7 | 123 | keypad.attach(&cbAfterInput); |
SSJprocesa | 0:626b11d510b7 | 124 | keypad.start(); // energize the keypad via c0-c3 |
SSJprocesa | 0:626b11d510b7 | 125 | mostrar(); |
SSJprocesa | 0:626b11d510b7 | 126 | |
SSJprocesa | 0:626b11d510b7 | 127 | while(1) |
SSJprocesa | 0:626b11d510b7 | 128 | { |
SSJprocesa | 0:626b11d510b7 | 129 | |
SSJprocesa | 0:626b11d510b7 | 130 | if(Keytable[a]==10) |
SSJprocesa | 0:626b11d510b7 | 131 | { |
SSJprocesa | 0:626b11d510b7 | 132 | if(aste==4){aste=0;} |
SSJprocesa | 0:626b11d510b7 | 133 | |
SSJprocesa | 0:626b11d510b7 | 134 | switch(aste) |
SSJprocesa | 0:626b11d510b7 | 135 | { |
SSJprocesa | 0:626b11d510b7 | 136 | |
SSJprocesa | 0:626b11d510b7 | 137 | case 0:limpiar(); |
SSJprocesa | 0:626b11d510b7 | 138 | lcd.locate(3,0); |
SSJprocesa | 0:626b11d510b7 | 139 | lcd.printf(" "); |
SSJprocesa | 0:626b11d510b7 | 140 | p=numero(); |
SSJprocesa | 0:626b11d510b7 | 141 | mostrar(); |
SSJprocesa | 0:626b11d510b7 | 142 | break; |
SSJprocesa | 0:626b11d510b7 | 143 | |
SSJprocesa | 0:626b11d510b7 | 144 | case 1:limpiar(); |
SSJprocesa | 0:626b11d510b7 | 145 | lcd.locate(11,0); |
SSJprocesa | 0:626b11d510b7 | 146 | lcd.printf(" "); |
SSJprocesa | 0:626b11d510b7 | 147 | i=numero(); |
SSJprocesa | 0:626b11d510b7 | 148 | mostrar(); |
SSJprocesa | 0:626b11d510b7 | 149 | |
SSJprocesa | 0:626b11d510b7 | 150 | break; |
SSJprocesa | 0:626b11d510b7 | 151 | |
SSJprocesa | 0:626b11d510b7 | 152 | case 2:limpiar(); |
SSJprocesa | 0:626b11d510b7 | 153 | lcd.locate(3,1); |
SSJprocesa | 0:626b11d510b7 | 154 | lcd.printf(" "); |
SSJprocesa | 0:626b11d510b7 | 155 | d=numero(); |
SSJprocesa | 0:626b11d510b7 | 156 | mostrar(); |
SSJprocesa | 0:626b11d510b7 | 157 | break; |
SSJprocesa | 0:626b11d510b7 | 158 | |
SSJprocesa | 0:626b11d510b7 | 159 | case 3:limpiar(); |
SSJprocesa | 0:626b11d510b7 | 160 | lcd.locate(11,1); |
SSJprocesa | 0:626b11d510b7 | 161 | lcd.printf(" "); |
SSJprocesa | 0:626b11d510b7 | 162 | s=numero(); |
SSJprocesa | 0:626b11d510b7 | 163 | mostrar(); |
SSJprocesa | 0:626b11d510b7 | 164 | break; |
SSJprocesa | 0:626b11d510b7 | 165 | } |
SSJprocesa | 0:626b11d510b7 | 166 | |
SSJprocesa | 0:626b11d510b7 | 167 | aste++; |
SSJprocesa | 0:626b11d510b7 | 168 | } |
SSJprocesa | 0:626b11d510b7 | 169 | |
SSJprocesa | 0:626b11d510b7 | 170 | } |
SSJprocesa | 0:626b11d510b7 | 171 | } |