Tarea2, procesadores

Dependencies:   Debounced TextLCDm mbed

main.cpp

Committer:
mandres7
Date:
2013-11-10
Revision:
0:62bc56579cdb

File content as of revision 0:62bc56579cdb:

#include "mbed.h"
#include "TextLCD.h"
#include "DebouncedIn.h"

TextLCD lcd(PTC10, PTC11, PTC12, PTC13, PTC16, PTC17); // rs, e, d4-d7.. Nota: No se quiere función de lectura, luego ese puerto a tierra.
//lectura=1, escritura=0

//Aumento en rampa de Sp, Kp, Ki, Kd
PwmOut rled(LED_RED);

DebouncedIn next(PTE2);
DebouncedIn up(PTE3);
DebouncedIn down(PTE4);

Timer timer1;

int C1=0x0F; 
int i,j,k,l;

int main() {

int c;
c=0;

lcd.cls();     
lcd.locate(0,0);
lcd.printf("sp:%d",i);
lcd.locate(8,0);
lcd.printf("kp:%d",j);
lcd.locate(0,1);
lcd.printf("ki:%d",k);
lcd.locate(8,1);
lcd.printf("kd:%d",l);

//SP

while (1){

if (next.falling()){    
        c++;
        }          

    //Salto a SP
    if (c==0){
        
        lcd.locate(3,0);
        lcd.putc(0xFE);                
        lcd.writeCommand(C1);
        lcd.locate(3,0);
        lcd.printf("%d",i);
        
            while(c==0){  
              
            //espacio de trabajo
            
            if(up.falling()||down.falling()){
                timer1.start();
            
            while(up==0||down==0){                       
                if(up==1&&down==1){
                timer1.stop();
                timer1.reset();
                               }
                if (timer1.read()>0&&timer1.read()<=5&&up==0&&i>=0&&i<=9999) {
                ++i;                
                wait(0.1);               
                                                                                  } 
                if (timer1.read()>0&&timer1.read()<=5&&down==0&&i>=0&&i<=9999) {
                --i;                
                wait(0.1);               
                                                                                } 
        
                if (timer1.read()>5&&timer1.read()<=10&&up==0&&i>=0&&i<=9999) {
                i+=5;                
                wait(0.1/5);               
                                                                              } 
                
                if (timer1.read()>5&&timer1.read()<=10&&down==0&&i>=0&&i<=9999) {
                i-=5;                
                wait(0.1/5);             
                                                                                } 
                
                
                if (timer1.read()>10&&timer1.read()<=100&&up==0&&i>=0&&i<=9999) {
                i+=10;               
                wait(0.03);               
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=100&&down==0&&i>=0&&i<=9999) {
                i-=10;                
                wait(0.03);               
                                                                                  } 
                if (timer1.read()>10&&timer1.read()<=1000&&up==0&&i>=0&&i<=9999) {
                i+=100;
                wait(0.003);              
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=1000&&down==0&&i>=0&&i<=9999) {
                i-=100;                  
                wait(0.003);
                                                                                  } 
                                                                                                  
                if(i<0){
                i=0;
                        }
           
                if(i>9999){
                i=9999;
                }
                
                //NEW !! (not zeros in -- process)
                if(i<10){                
                lcd.locate(4,0);
                lcd.putc(0xFE);  
                        }
                        
                if(i<100){                
                lcd.locate(5,0);
                lcd.putc(0xFE);  
                        }                
                
                if(i<1000){                
                lcd.locate(6,0);
                lcd.putc(0xFE);  
                        }  
                //
                
                i=i;
                //lcd.locate(3,0);
                //lcd.printf("     ");
                lcd.locate(3,0);
                lcd.printf("%d", i);
                wait(0.2);          
                       
                       }
                                            }
           
            //fin espacio de trabajo            
            
            if(next.falling()){
                c++;
                }                                                             
                }
                } 
              
        
    //Salto a Kp
    if (c==1){
        
        lcd.locate(11,0);
        lcd.putc(0xFE);                
        lcd.writeCommand(C1);
        lcd.locate(11,0);
        lcd.printf("%d",j);
        
            while(c==1){
            
            //Work space
            
            if(up.falling()||down.falling()){
                timer1.start();
            
            while(up==0||down==0){                       
                if(up==1&&down==1){
                timer1.stop();
                timer1.reset();
                               }
                if (timer1.read()>0&&timer1.read()<=5&&up==0&&j>=0&&j<=9999) {
                ++j;                
                wait(0.1);               
                                                                                  } 
                if (timer1.read()>0&&timer1.read()<=5&&down==0&&j>=0&&j<=9999) {
                --j;                
                wait(0.1);               
                                                                                } 
        
                if (timer1.read()>5&&timer1.read()<=10&&up==0&&j>=0&&j<=9999) {
                j+=5;                
                wait(0.1/5);               
                                                                              } 
                
                if (timer1.read()>5&&timer1.read()<=10&&down==0&&j>=0&&j<=9999) {
                j-=5;                
                wait(0.1/5);             
                                                                                } 
                
                
                if (timer1.read()>10&&timer1.read()<=100&&up==0&&j>=0&&j<=9999) {
                j+=10;               
                wait(0.03);               
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=100&&down==0&&j>=0&&j<=9999) {
                j-=10;                
                wait(0.03);               
                                                                                  } 
                if (timer1.read()>10&&timer1.read()<=1000&&up==0&&j>=0&&j<=9999) {
                j+=100;
                wait(0.003);              
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=1000&&down==0&&j>=0&&j<=9999) {
                j-=100;                  
                wait(0.003);
                                                                                  } 
                                                                                                  
                if(j<0){
                j=0;
                        }
           
                if(j>9999){
                j=9999;
                }
                
                //NEW !! (not zeros in -- process)
                if(j<10){                
                lcd.locate(12,0);
                lcd.putc(0xFE);  
                        }
                        
                if(j<100){                
                lcd.locate(13,0);
                lcd.putc(0xFE);  
                        }                
                
                if(j<1000){                
                lcd.locate(14,0);
                lcd.putc(0xFE);  
                        }  
                //
                
                j=j;
                //lcd.locate(11,0);
                //lcd.printf("     ");
                lcd.locate(11,0); //before lcd.locate(12,0);
                lcd.printf("%d", j);
                wait(0.2);          
                       
                       }
                                            }
           
            //End work space            
              
             if(next.falling()){
                c++;
                }                                                             
                }
                }
              
    //Salto a Kp
    if (c==2){
        
        lcd.locate(3,1);
        lcd.putc(0xFE);                
        lcd.writeCommand(C1);
        lcd.locate(3,1);
        lcd.printf("%d",k);
        
            while(c==2){ 
            
            //Work space
            
            if(up.falling()||down.falling()){
                timer1.start();
            
            while(up==0||down==0){                       
                if(up==1&&down==1){
                timer1.stop();
                timer1.reset();
                               }
                if (timer1.read()>0&&timer1.read()<=5&&up==0&&k>=0&&k<=9999) {
                ++k;                
                wait(0.1);               
                                                                                  } 
                if (timer1.read()>0&&timer1.read()<=5&&down==0&&k>=0&&k<=9999) {
                --k;                
                wait(0.1);               
                                                                                } 
        
                if (timer1.read()>5&&timer1.read()<=10&&up==0&&k>=0&&k<=9999) {
                k+=5;                
                wait(0.1/5);               
                                                                              } 
                
                if (timer1.read()>5&&timer1.read()<=10&&down==0&&k>=0&&k<=9999) {
                k-=5;                
                wait(0.1/5);             
                                                                                } 
                
                
                if (timer1.read()>10&&timer1.read()<=100&&up==0&&k>=0&&k<=9999) {
                k+=10;               
                wait(0.03);               
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=100&&down==0&&k>=0&&k<=9999) {
                k-=10;                
                wait(0.03);               
                                                                                  } 
                if (timer1.read()>10&&timer1.read()<=1000&&up==0&&k>=0&&k<=9999) {
                k+=100;
                wait(0.003);              
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=1000&&down==0&&k>=0&&k<=9999) {
                k-=100;                  
                wait(0.003);
                                                                                  } 
                                                                                                  
                if(k<0){
                k=0;
                        }
           
                if(k>9999){
                k=9999;
                }
                
                //NEW !! (not zeros in -- process)
                if(k<10){                
                lcd.locate(4,1);
                lcd.putc(0xFE);  
                        }
                        
                if(k<100){                
                lcd.locate(5,1);
                lcd.putc(0xFE);  
                        }                
                
                if(k<1000){                
                lcd.locate(6,1);
                lcd.putc(0xFE);  
                        }  
                //
                
                k=k;
                //lcd.locate(3,1);
                //lcd.printf("     ");
                lcd.locate(3,1); //before lcd.locate(4,1);
                lcd.printf("%d", k);
                wait(0.2);          
                       
                       }
                                            }
           
            //End work space  

             if(next.falling()){
                c++;
                }                                                             
                }
                }        

    //Salto a Kp
    if (c==3){
        
        lcd.locate(11,1);
        lcd.putc(0xFE);                
        lcd.writeCommand(C1);
        lcd.locate(11,1);
        lcd.printf("%d",l);
        
            while(c==3){
            
            //Work space
            
            if(up.falling()||down.falling()){
                timer1.start();
            
            while(up==0||down==0){                       
                if(up==1&&down==1){
                timer1.stop();
                timer1.reset();
                               }
                if (timer1.read()>0&&timer1.read()<=5&&up==0&&l>=0&&l<=9999) {
                ++l;                
                wait(0.1);               
                                                                                  } 
                if (timer1.read()>0&&timer1.read()<=5&&down==0&&l>=0&&l<=9999) {
                --l;                
                wait(0.1);               
                                                                                } 
        
                if (timer1.read()>5&&timer1.read()<=10&&up==0&&l>=0&&l<=9999) {
                l+=5;                
                wait(0.1/5);               
                                                                              } 
                
                if (timer1.read()>5&&timer1.read()<=10&&down==0&&l>=0&&l<=9999) {
                l-=5;                
                wait(0.1/5);             
                                                                                } 
                
                
                if (timer1.read()>10&&timer1.read()<=100&&up==0&&l>=0&&l<=9999) {
                l+=10;               
                wait(0.03);               
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=100&&down==0&&l>=0&&l<=9999) {
                l-=10;                
                wait(0.03);               
                                                                                  } 
                if (timer1.read()>10&&timer1.read()<=1000&&up==0&&l>=0&&l<=9999) {
                l+=100;
                wait(0.003);              
                                                                               }
                
                if (timer1.read()>10&&timer1.read()<=1000&&down==0&&l>=0&&l<=9999) {
                l-=100;                  
                wait(0.003);
                                                                                  } 
                                                                                                  
                if(l<0){
                l=0;
                        }
           
                if(l>9999){
                l=9999;
                }
                
                //NEW !! (not zeros in -- process)
                if(l<10){                
                lcd.locate(12,1);
                lcd.putc(0xFE);  
                        }
                        
                if(l<100){                
                lcd.locate(13,1);
                lcd.putc(0xFE);  
                        }                
                
                if(l<1000){                
                lcd.locate(14,1);
                lcd.putc(0xFE);  
                        }  
                //
                
                l=l;
                //lcd.locate(11,1);
                //lcd.printf("     ");
                lcd.locate(11,1); //before lcd.locate(12,1);
                lcd.printf("%d", l);
                wait(0.2);          
                       
                       }
                                            }
           
            //End work space                           
             
             if(next.falling()){
                c++;
                                }                                                             
                }
                }   

    //          
                 if(c==4 || c>4){
                c=0;
                                }                                                                                  
                         
}
}