teclado lcd

Dependencies:   TextLCD keypad mbed

Revision:
0:9a67044d749e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Feb 25 14:21:11 2017 +0000
@@ -0,0 +1,298 @@
+# include  "mbed.h" 
+# include  "keypad.h" 
+# include  "TextLCD.h"
+  
+  
+  TextLCD lcd (D15,D14,D13,D12,D11,D10);  // RS, e, d4-d7
+ 
+  AnalogIn Ain (A0);
+  AnalogOut Aout (A2);
+  
+int  C4 = 0x0C ;
+int  C1 = 0x0E ;
+int  p = 0 ;
+ 
+int  c = 0 ;
+int  y = 0 ;  
+float  i;  // establecer el punto 
+float  j = 0 ;  // salida planta 
+float ji = 0 ;  // variable de Proceso interno 
+float  spi = 0 ;  // variable de Proceso interno 
+float h = 0 ;  // entrada planta 
+float m = 0 ;  // Error 
+float  mv = 0 ;
+float  g = 0 ;
+
+ 
+ float  ap, ai; 
+ int  sp = 0 ;
+ int  kp = 0 ;
+ int  ki = 0 ;
+ int  k = 0 ;
+ 
+ 
+ 
+ 
+  // Definir sus propios valores del teclado 
+char tabla de teclas [] = { '1' ,  '2' ,  '3' ,  '*' ,
+                      '4' ,  '5' ,  '6' ,  '0' ,
+                       '7' ,  ' 8 ' ,  ' 9 ' ,  ' # ' ,
+                       ' A ' ,  ' B ' ,  ' C ' ,  ' D '};
+                    
+ int  Teclado [] = {  1 ,  4 ,  7 ,  13 ,
+                    2 ,  5 ,  8 ,  0 ,
+                    3 ,  6 ,  9 ,  14 ,
+                    10 , 11 , 12 ,  15
+                    };
+ 
+    uint32_t  cbAfterInput ( uint32_t  clave)
+    {
+ 
+        if  (KEYPAD [clave] == 'A' )
+        {
+        Teclado [clave] = 0 ;              
+            C ++;
+                         } 
+        
+        if (KEYPAD [clave] == 'B' ) {
+        Teclado [clave] = 0 ;
+            sp = 0 ;
+            kp = 0 ;
+            ki = 0 ;
+            kd = 0 ;
+                          }
+ 
+                          
+        if (KEYTABLE [clave] == 'D' ) {
+        Teclado [clave] = 0 ;
+           p = 1 ;
+                             }   
+ 
+////////////
+ 
+          if  (c == 0 ) {
+                                         
+               SP = SP + Teclado [clave];
+                  
+              }
+              
+           if  (c == 1 ) {         
+ 
+               kp kp = + Teclado [clave];
+               
+              }
+           if  (c == 2 ) {        
+ 
+               ki ki = + Teclado [clave];
+                  
+              }
+           if  (c == 3 ) {   
+               
+               KD = kd + Teclado [clave];
+                  
+              } 
+ 
+////////////
+       
+        
+        volver  0 ;
+    } // Fin unit32_t
+       
+ 
+ 
+  int  main () {
+      teclado teclado (D9,D8,D7,D6,D5,D4,D3,D2);
+      keypad.CallAfterInput (y cbAfterInput);
+      keypad.Start ();
+      
+    lcd.cls ();
+    lcd. printf ( "SP:% d" , sp);
+    lcd.locate ( 8 , 0 );
+    lcd. printf ( "Kp:% d" , kp);
+    lcd.locate ( 0 , 1 );
+    lcd. printf ( "Ki:% d" , ki);
+    lcd.locate ( 8 , 1 );
+    lcd. printf ( "Kd:% d" , kd);
+    lcd.writeCommand (C1); // escribimos ONU comando segun el manual del módulo del LCD 
+    lcd.locate ( 0 , 0 );
+    lcd. printf ( "SP:% d" , sp);
+      
+      mientras que  ( 1 ) {                                     
+         
+   
+           if  (c == 0 ) {
+               lcd.locate ( 3 , 0 );
+               . lcd putc ( 0xFE );           
+               lcd.locate ( 4 , 0 );
+               lcd. printf ( "% d" , sp);                                         
+                             
+                // NUEVO !! (no ceros en - proceso) 
+                if (sp < 10 ) {                
+                lcd.locate ( 5 , 0 );
+                . lcd putc ( 0xFE );  
+                        }
+                        
+                if (sp < 100 ) {                
+                lcd.locate ( 6 , 0 );
+                . lcd putc ( 0xFE );  
+                        }                             
+                
+                lcd.locate ( 4 , 0 );
+                lcd. printf ( "% d" , sp);
+                 //wait(0.1);  
+                 
+               //    
+                  
+              }
+              
+           if (c == 1 ) {
+               lcd.locate ( 11 , 0 );
+               . lcd putc ( 0xFE );           
+               lcd.locate ( 12 , 0 );
+               lcd. printf ( "% d" , kp);                                         
+                             
+                // NUEVO !! (no ceros en - proceso) 
+             if (kp < 10 ) {                
+                lcd.locate ( 13 , 0 );
+                . lcd putc ( 0xFE );  
+                        }
+                        
+            if (kp < 100 ) {                
+                lcd.locate ( 14 , 0 );
+                . lcd putc ( 0xFE );  
+                        }                             
+                
+                lcd.locate ( 12 , 0 );
+                lcd. printf ( "% d" , kp);
+                 //wait(0.1);  
+                 
+               //    
+                  
+              }
+              
+           if  (c == 2 ) {        
+               lcd.locate ( 3 , 1 );
+               . lcd putc ( 0xFE );               
+               lcd.locate ( 4 , 1 );
+               lcd. printf ( "% d" , ki);              
+                
+                // NUEVO !! (no ceros en - proceso) 
+                if (Ki < 10 ) {                
+                lcd.locate ( 5 , 1 );
+                . lcd putc ( 0xFE );  
+                        }
+                        
+                if (ki < 100 ) {                
+                lcd.locate ( 6 , 1 );
+                . lcd putc ( 0xFE );  
+                        }                             
+                
+                lcd.locate ( 4 , 1 );
+                lcd. printf ( "% d" , ki);
+                 //wait(0.2);   
+                 
+               //    
+              
+              }
+           if  (c == 3 ) {       
+               lcd.locate ( 11 , 1 );
+               . lcd putc ( 0xFE );           
+               lcd.locate ( 12 , 1 );
+               lcd. printf ( "% d" , kd);
+ 
+                // NUEVO !! (no ceros en - proceso) 
+                if (kd < 10 ) {                
+                lcd.locate ( 13 , 1 );
+                . lcd putc ( 0xFE );  
+                        }
+                        
+                if (kd < 100 ) {                
+                lcd.locate ( 14 , 1 );
+                . lcd putc ( 0xFE );  
+                        }                             
+                
+                lcd.locate ( 12 , 1 );
+                lcd. printf ( "% d" , kd);
+                 //wait(0.2);  
+              }
+                              
+           if (c == 4  || c> 4 ) {
+                c = 0 ;
+                          } 
+                          
+           if (p == 1 ) {
+           c = 0 ;
+            romper ;     
+               }
+                        
+                                        }
+        
+           
+           lcd.writeCommand (C4); // escribimos ONU comando segun el manual del módulo del LCD para quitar el cursor bajo 
+           lcd.cls ();  // Borra la Pantalla 
+           . lcd printf ( "Guardados!" ); 
+           wait ( 2 );
+           lcd.cls ();
+           . lcd printf ( "INICIA EL PID" );
+           wait ( 2 );
+            // se imprimen los reseca del control de ************************************* ****
+           
+           i = sp / 999 ;
+           lcd.cls ();
+           lcd. printf ( "Er:% 2F." , m);
+           lcd.locate ( 8 , 0 );
+           lcd. printf ( "Yo:% 2F." , j);
+           lcd.locate ( 0 , 1 );
+           lcd. printf ( "SP:% d" , sp);
+           lcd.locate ( 8 , 1 );
+           lcd. printf ( "Co: 1f%." , h);
+           wait ( 2 );
+           
+           // 
+        while ( 1 ) {
+        
+            spi = sp * ( 3.3 / 999 );
+            
+        //wait(0.3); 
+              i = sp / 999 ;
+         if (i <= 1 ) {
+       
+        j = Ain;
+        ji = j * 3.3 ;
+        m = (SPI-ji);
+        // N = m * 100;
+        ap = kp * m;
+        ai = (Ki * m) + ai;
+        
+        ad = kd * (m-mv);
+        h = p + ai + ad;
+   
+        si  (h> 999 ) {
+        h = 999 ;
+                   }
+        si  (h < 0 ) {
+        h = 0 ;
+                   }
+                              
+        g = (h / 999 );
+                                                       
+        Aout = g;
+        esperar ( 0,22 );
+ 
+        
+        lcd.cls ();
+        lcd. printf ( "Er:% 2F." , m);
+        lcd.locate ( 8 , 0 );
+        lcd. printf ( "Yo:% 2F." , j);
+        lcd.locate ( 0 , 1 );
+        lcd. printf ( "SP:% d" , sp);
+        lcd.locate ( 8 , 1 );
+        lcd. printf ( "Co: 1f%." , h);
+        }
+ 
+ 
+        MV = m;
+    }  // Si bien            
+           //
+ 
+          } // Int main 
\ No newline at end of file