![](/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
Revision 0:626b11d510b7, committed 2016-05-17
- Comitter:
- SSJprocesa
- Date:
- Tue May 17 16:54:56 2016 +0000
- Commit message:
- Permite la configuraci?n de los par?metros Kp, Ki Kd y Sp en un Display LCD 16x2 en un teclado matricial 4x4.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Tue May 17 16:54:56 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/simon/code/TextLCD/#308d188a2d3a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/keypad.lib Tue May 17 16:54:56 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/yoonghm/code/keypad/#da060f8c03e8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue May 17 16:54:56 2016 +0000 @@ -0,0 +1,171 @@ +#include "mbed.h" +#include "TextLCD.h" +#include "Keypad.h" + +TextLCD lcd(PTC9, PTC8, PTA5, PTA4, PTA12, PTD4); // rs, e, d4-d7 +int long g=0,p=0,i=0,d=0,s=0,chan=0,num=0; +int c=1,b=1,a=15,uno=0,dos=0,tre=0,cua=0,aux=0,jod=0,pla=0,aste=0; + + int Keytable[] = { 1, 2, 3, 10, // r0 + 4, 5, 6, 11, // r1 + 7, 8, 9, 12, // r2 + 20,0, 21, 13 // r3 + }; + + + uint32_t cbAfterInput(uint32_t index) { + a = index; + return 0; + } + + void limpiar() + { + c=1,a=15,uno=0,dos=0,tre=0,cua=0,aux=0,b=1,jod=0,pla=0; + } + + void nds() + { + if(aste==0){lcd.locate((3+aux),0);} + if(aste==1){lcd.locate((11+aux),0);} + if(aste==2){lcd.locate((3+aux),1);} + if(aste==3){lcd.locate((11+aux),1);} + } + + void mostrar () + { + lcd.locate(0,0); + lcd.printf("Kp=%Ld", p); + lcd.locate(8,0); + lcd.printf("Ki=%Ld", i); + lcd.locate(0,1); + lcd.printf("Kd=%Ld", d); + lcd.locate(8,1); + lcd.printf("Sp=%Ld", s); + } + + void titi() + { + jod++; + if(jod<=1000){ + nds(); + lcd.printf ("_"); + } + if(jod>=2000){ + nds(); + lcd.printf ("%Ld",chan); + } + if(jod==3000){jod=0;} + } + + + int long numero() +{ + while(b==1&&c==1) + { + titi(); + nds(); + lcd.printf("%Ld",chan); + if(Keytable[a]==21){ + aux++; + if(aux==4){c=0;aux=3;} + a=15; + chan=0;} + + if(Keytable[a]==10){b=0;chan=0;} + if(Keytable[a]!=10&&Keytable[a]!=11&&Keytable[a]!=12&&Keytable[a]!=13&&Keytable[a]!=20&&Keytable[a]!=21&&a!=15) + { + chan=Keytable[a]; + nds(); + lcd.printf ("%Ld",chan); + if(chan==50){chan=0;} + switch(aux){ + case 0:uno=chan; + break; + case 1:dos=chan; + break; + case 2:tre=chan; + break; + case 3:cua=chan; + break; + default : a=15; + } + + a=15; + + } + } + aux=aux; + switch(aux) + { + case 0: + uno=uno; + break; + case 1: + uno=uno*10;dos=dos; + break; + case 2: + uno=uno*100;dos=dos*10;tre=tre; + break; + case 3: + uno=uno*1000;dos=dos*100;tre=tre*10;cua=cua; + break; + default : aux=0; + } + num=uno+dos+tre+cua; + aux=0; +return(num); +} + + +int main() { + // r0 r1 r2 r3 c0 c1 c2 c3 + Keypad keypad(PTC11, PTC10, PTC6, PTC5, PTC4, PTC3, PTC0, PTC7); + keypad.attach(&cbAfterInput); + keypad.start(); // energize the keypad via c0-c3 + mostrar(); + + while(1) + { + + if(Keytable[a]==10) + { + if(aste==4){aste=0;} + + switch(aste) + { + + case 0:limpiar(); + lcd.locate(3,0); + lcd.printf(" "); + p=numero(); + mostrar(); + break; + + case 1:limpiar(); + lcd.locate(11,0); + lcd.printf(" "); + i=numero(); + mostrar(); + + break; + + case 2:limpiar(); + lcd.locate(3,1); + lcd.printf(" "); + d=numero(); + mostrar(); + break; + + case 3:limpiar(); + lcd.locate(11,1); + lcd.printf(" "); + s=numero(); + mostrar(); + break; + } + + aste++; + } + + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue May 17 16:54:56 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/7c328cabac7e \ No newline at end of file