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

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?

UserRevisionLine numberNew 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 }