Programa mbed
Dependencies: mbed TextLCD MMA8451Q
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 }
Generated on Sun Aug 28 2022 08:11:01 by
1.7.2