Programa mbed

Dependencies:   mbed TextLCD MMA8451Q

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "string"
00003 #include "TextLCD.h"
00004 Serial pc(USBTX,USBRX);
00005 
00006 TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2);
00007 DigitalOut negro(PTB0);
00008 DigitalOut naranja(PTB1);
00009 DigitalOut cafe(PTB2);
00010 DigitalOut amarillo(PTB3);
00011 DigitalIn pulso(PTC1);
00012 void velocidad(int a,float ad);
00013 double temp=0;
00014 int numero_pasos=0;
00015 int k=0;
00016 string cadena;
00017 int selec;
00018 char sentido;
00019 int recorrido=0;
00020 char tiempo;
00021 bool antirebote=false;
00022 Timer Timer1;
00023 float rpm=0,auxrpm=0;
00024 int r=0;
00025 int dist(char datos[5]);
00026 
00027 
00028 int main(){
00029   char buffer[5];
00030   int red=0;
00031      while(1){
00032   if((pulso==0)&&(antirebote==false)){
00033            // contador++;
00034             //disa++;
00035             antirebote=true;
00036             auxrpm=Timer1.read_ms();
00037             Timer1.stop();
00038             Timer1.reset();
00039           //  rpm=10000/auxrpm;
00040            
00041             if(recorrido>0){
00042             Timer1.start();}
00043             }
00044         if((pulso==1)&&(antirebote==true)){
00045             antirebote=false;
00046             }
00047            
00048         
00049          if(pc.readable()){// captura string
00050          
00051           pc.gets(buffer,8);
00052           buffer[0]=' ';
00053           //pc.printf("%s",buffer);
00054           sentido=buffer[1];
00055         
00056           //  lcd.printf("%d",temp);
00057          } 
00058           red=dist(buffer);
00059           if(red!=0){
00060               
00061           red=dist(buffer);
00062           temp=red*0.01;
00063        /*   lcd.cls();
00064           lcd.locate(0,0);   
00065           lcd.printf("%d",red);
00066           lcd.locate(0,1);     
00067           lcd.printf("%.3f",temp);*/
00068          
00069     }
00070         
00071 
00072 /*if(tiempo=='1'){
00073  temp=0.001;}*/
00074  if(sentido=='d'){
00075         
00076         //lcd.printf("esta en los extremos");
00077         selec=1;
00078         //pc.printf("   derecha");
00079 for(int i=0; i<=600;i++){
00080     if(k>4){
00081         r=r+1;
00082         k=0;
00083         }
00084          if(r==11){
00085             rpm=(r*(1/temp)*60)/1000;
00086             lcd.cls();
00087             lcd.locate(0,0); 
00088             lcd.printf("%.3f",rpm);
00089             r=0;}
00090     k=k+1;
00091     switch(k){
00092         case 1:
00093         amarillo=1;
00094         negro=0;
00095         //wait(0.2);
00096         break;
00097         case 2:
00098         cafe=1;
00099         amarillo=0;
00100         //wait(0.2);
00101         break;
00102         case 3:
00103         naranja=1;
00104         cafe=0;
00105        // wait(0.2);
00106         break;
00107         case 4:
00108         negro=1;
00109         naranja=0;
00110        // wait(0.2);
00111         break;
00112         }
00113        wait(temp);
00114         
00115         
00116     
00117    } 
00118    
00119    //rpm=0;
00120  //  red=0; 
00121    }
00122     lcd.cls();
00123     lcd.locate(0,0); 
00124     lcd.printf("esperando");
00125      pc.printf("esperando ");
00126             
00127  if(sentido=='i'){
00128         selec=2;
00129         //pc.printf("   izquierda");
00130 for(int i=0; i<=600;i++){
00131     if(k>4){
00132         k=0;
00133         r=r+1;
00134         }
00135         if(r==11){
00136             rpm=(r*(1/temp)*60)/1000;
00137             lcd.cls();
00138             lcd.locate(0,0); 
00139             lcd.printf("%.3f",rpm);
00140             pc.printf("%.1f",rpm);
00141             r=0;}
00142     k=k+1;
00143     switch(k){
00144         case 1:
00145         negro=1;
00146         amarillo=0;
00147         //wait(0.2);
00148         break;
00149         case 2:
00150         naranja=1;
00151         negro=0;
00152         //wait(0.2);
00153         break;
00154         case 3:
00155         cafe=1;
00156         naranja=0;
00157        // wait(0.2);
00158         break;
00159         case 4:
00160         amarillo=1;
00161         cafe=0;
00162        // wait(0.2);
00163         break;
00164         }
00165        wait(temp);
00166         
00167         
00168     
00169    } 
00170     
00171   // rpm=0;
00172   // red=0; 
00173    }
00174    lcd.cls();
00175     lcd.locate(0,0); 
00176     lcd.printf("esperando");
00177      pc.printf(" esperando");
00178     
00179         
00180         if(sentido=='n'){
00181        /* cafe=0;
00182         amarillo=0;
00183         negro=0;
00184         naranja=0;
00185         selec=0;*/
00186        // pc.printf("  sin sentido");
00187       }
00188        // wait(0.5);
00189 
00190 
00191             
00192 }
00193 }  
00194 
00195 int dist(char datos[8]){
00196    int numero=0,contador=0;
00197    char c=' ';
00198     for(int i = 8;i >= 0;i --){
00199        c=datos[i];
00200        //pc.putc(c);
00201        if(c=='0'){contador=contador+1;  }
00202        if(c=='1'){
00203           //  pc.printf("uno");
00204             contador=contador+1;
00205             if(contador==1){numero=numero+1;}}
00206           /*  if(contador==2){numero=numero+10;}
00207             if(contador==3){numero=numero+100;} }*/
00208         if(c=='2'){
00209             contador=contador+1;
00210             if(contador==1){numero=numero+2;}}
00211            /* if(contador==2){numero=numero+20;}
00212             if(contador==3){numero=numero+200;} }*/
00213         if(c=='3'){
00214             contador=contador+1;
00215             if(contador==1){numero=numero+3;}}
00216             /*if(contador==2){numero=numero+30;}
00217             if(contador==3){numero=numero+300;} }*/
00218         if(c=='4'){
00219             contador=contador+1;
00220             if(contador==1){numero=numero+4;}}
00221          /*   if(contador==2){numero=numero+40;}
00222             if(contador==3){numero=numero+400;} }*/
00223         if(c=='5'){
00224             contador=contador+1;
00225             if(contador==1){numero=numero+5;}}
00226            /* if(contador==2){numero=numero+50;}
00227             if(contador==3){numero=numero+500;} }*/
00228         if(c=='6'){
00229             contador=contador+1;
00230             if(contador==1){numero=numero+6;}}
00231           /*  if(contador==2){numero=numero+60;}
00232             if(contador==3){numero=numero+600;} }*/
00233         if(c=='7'){
00234             contador=contador+1;
00235             if(contador==1){numero=numero+7;}}
00236             /*if(contador==2){numero=numero+70;}
00237             if(contador==3){numero=numero+700;} }*/
00238         if(c=='8'){
00239             contador=contador+1;
00240             if(contador==1){numero=numero+8;}}
00241         /*    if(contador==2){numero=numero+80;}
00242             if(contador==3){numero=numero+800;} }*/
00243         if(c=='9'){
00244             contador=contador+1;
00245             if(contador==1){numero=numero+9;}}
00246            /* if(contador==2){numero=numero+90;}
00247             if(contador==3){numero=numero+900;} }*/
00248        
00249         }
00250         
00251    
00252     
00253       
00254    // lcd.printf("%d",numero);
00255      
00256    return numero;
00257                
00258                
00259             
00260     
00261             
00262     
00263     }