teclado lcd

Dependencies:   TextLCD keypad mbed

main.cpp

Committer:
serbm
Date:
2017-02-25
Revision:
0:9a67044d749e

File content as of revision 0:9a67044d749e:

# 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