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

Files at this revision

API Documentation at this revision

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

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
keypad.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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