FRDM KL25Z - LCD 16x2 - Teclado 4x4

Dependencies:   Keypad TextLCD-modificada mbed

/media/uploads/Susanaranjo/img_20160508_014013.jpg

main.cpp

Committer:
Susanaranjo
Date:
2016-05-16
Revision:
3:6d93b935b945
Parent:
2:316c3e9ad8d8

File content as of revision 3:6d93b935b945:

#include "mbed.h"
#include "TextLCD.h"
#include "Keypad.h"


//Configuración de la pantalla
TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2); // Rs, E, d4, d5, d6, d7 

//COnfiguración del teclado
Keypad kpad(PTA12,PTD4,PTA2,PTA1,PTC9,PTC8,PTA5,PTA4); // f1,f2,f3,f4,c1,c2,c3,c4



int main() {
   int contador=0;
   int item=0;
   int i=0;
   int tecla=0;
   int const0=0;
   int const1=0;
   int const2=0;
   int const3=0;
   int kp,ki,kd,sp;
   int entero;
   char key;
   int released=1;
    
    lcd.locate(0,0);
    lcd.printf("Kp=");
    lcd.locate(8,0);
    lcd.printf("Ki=");
    lcd.locate(0,1);
    lcd.printf("Kd=");
    lcd.locate(8,1);
    lcd.printf("Sp=");
    lcd.locate(3,0);
    lcd.printf("_"); //cursor en el primer campo
    
    
    while(1) {
       i=0;
       contador=0;
       const0=0;
        const1=0;
         const2=0;
          const3=0;
          entero=0;
       
       while (i<=3){       
       key=kpad.ReadKey();//Lectura del teclado
       tecla=key-48; //Conversión de la tecla a entero
       switch(i){
       case 0:
       const0=tecla;
       case 1:
       const1=tecla;
       case 2:
       const2=tecla;
       case 3:
       const3=tecla;}
       
       //Conversión a entero del número completo ingresado 
       if(contador>=3){
           entero=1000*const0+100*const1+10*const2+const3;}
       else if (contador==2){
           entero=100*const0+10*const1+const2;}
       else if (contador==1){
           entero=10*const0+const1;}
       else if (contador==0){
           entero=const0;}
       
       
       if(key=='\0'){
       released=1;}
              
       if((key !='\0')&&(released==1)){
       released=0;  
      
      //Limpiar los valores y volver a comenzar 
      if(key=='#') {
       lcd.cls();
       lcd.locate(0,0);
       lcd.printf("Kp=");
       lcd.locate(8,0);
       lcd.printf("Ki=");
       lcd.locate(0,1);
       lcd.printf("Kd=");
       lcd.locate(8,1);
       lcd.printf("Sp=");
       lcd.locate(3,0);
       lcd.printf("_");
       
       const0=0;
       const1=0;
       const2=0;
       const3=0;
       
       entero=0;
       kp=0;
       ki=0;
       kd=0;
       sp=0;
       contador=-1;
       i=-1;
       item=0;
       
       //Confirmar el valor ingresado y pasar al siguiente campo 
      }else if(key=='*'){
      contador=-1;
      item=item+1;
      i=-1;
      
      if(item==1){
      lcd.locate(3,0);
      lcd.printf("%4Lu",kp); 
      lcd.locate(11,0);
      lcd.printf("_   "); //cursor en el siguiente campo
      entero=0;}
      
      if(item==2){
      lcd.locate(11,0);
      lcd.printf("%4Lu",ki); 
      lcd.locate(3,1);
      lcd.printf("_   "); //cursor en el siguiente campo
      entero=0;}
      
      if(item==3){
      lcd.locate(3,1);
      lcd.printf("%4Lu",kd); 
      lcd.locate(11,1);
      lcd.printf("_   "); //cursor en el siguiente campo
      entero=0;}
      
      if (item==4){
               lcd.locate(11,1);
               lcd.printf("%4Lu",sp); 
               wait_ms(1000);
               lcd.cls();   
               lcd.printf("Los valores han\n");
               lcd.printf("sido guardados");
               wait_ms(4000);
               lcd.cls();   
               lcd.printf("Pulse * para\n");
               lcd.printf("empezar de nuevo");
               wait_ms(2000);
               lcd.cls();
               lcd.locate(0,0);
               lcd.printf("Kp=%4Lu",kp);
               lcd.locate(8,0);
               lcd.printf("Ki=%4Lu",ki);
               lcd.locate(0,1);
               lcd.printf("Kd=%4Lu",kd);
               lcd.locate(8,1);
               lcd.printf("Sp=%4Lu",sp);}  
           
        if(item==5){
               lcd.cls();
               lcd.locate(0,0);
               lcd.printf("Kp=");
               lcd.locate(8,0);
               lcd.printf("Ki=");
               lcd.locate(0,1);
               lcd.printf("Kd=");
               lcd.locate(8,1);
               lcd.printf("Sp=");
               lcd.locate(3,0);
               lcd.printf("_"); //cursor en el primer campo
       
               const0=0;
               const1=0;
               const2=0;
               const3=0;
       
               entero=0;
               kp=0;
               ki=0;
               kd=0;
               sp=0;
               contador=-1;
               i=-1;
               item=0;}   
      
       }else if(key=='A'){
        lcd.cls();  
        lcd.printf("Tarea 8\n");
        lcd.printf("Procesadores");
         
           }else if(key=='B'){
        lcd.cls();   
        lcd.printf("Susana Naranjo\n");
        lcd.printf("Aaron Gonzalez");
            
           }else if(key=='C'){
         lcd.cls();     
         lcd.printf("Universidad\n");
         lcd.printf("Nacional");
          
           }else if(key=='D'){
         lcd.cls();    
         lcd.printf("Facultad de\n");
         lcd.printf("Minas");  
           }
       
       else{
           //Mostrar uno a uno el número correspondiente a la tecla pulsada en cada campo
           
           //Kp
           if (item==0){
               if (i==0){
                   lcd.locate(3,0); 
                   lcd.printf("_   ");}
               lcd.locate(3+i,0);
               lcd.printf("%u",tecla);
               if (i<3){
                   lcd.locate(4+i,0);
                   lcd.printf("_");
                   }
               kp=entero; }
               
           //Ki
           if (item==1){
               if (i==0){
                   lcd.locate(11,0);
                   lcd.printf("_   ");}
               lcd.locate(11+i,0);
               lcd.printf("%u",tecla);
                if (i<3){
                   lcd.locate(12+i,0);
                   lcd.printf("_");
                   }
               ki=entero;}     
           
           //Kd
           if (item==2){
               if (i==0){
                   lcd.locate(3,1);
                   lcd.printf("_   "); }
               lcd.locate(3+i,1);
               lcd.printf("%u",tecla);
                if (i<3){
                   lcd.locate(4+i,1);
                   lcd.printf("_");
                   }
               kd=entero;}            
           
           //Sp
           if (item==3){
               if (i==0){
               lcd.locate(11,1);
               lcd.printf("_   "); }
               lcd.locate(11+i,1);
               lcd.printf("%u",tecla);
                if (i<3){
                   lcd.locate(12+i,1);
                   lcd.printf("_");
                   }
               sp=entero; }  
           
           
           }//else 
           
           contador=contador+1;
           i++;
           
                 
           
           } //if((key !='\0')&&(released==1))
       
       } //while(i<=3)
     
    } // while(1)
} //main