Programa mbed

Dependencies:   mbed TextLCD MMA8451Q

Committer:
poresc
Date:
Mon Nov 23 23:48:59 2020 +0000
Revision:
0:2968705eeb36
m

Who changed what in which revision?

UserRevisionLine numberNew contents of line
poresc 0:2968705eeb36 1 #include "mbed.h"
poresc 0:2968705eeb36 2 #include "string"
poresc 0:2968705eeb36 3 #include "TextLCD.h"
poresc 0:2968705eeb36 4 Serial pc(USBTX,USBRX);
poresc 0:2968705eeb36 5
poresc 0:2968705eeb36 6 TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2);
poresc 0:2968705eeb36 7 DigitalOut negro(PTB0);
poresc 0:2968705eeb36 8 DigitalOut naranja(PTB1);
poresc 0:2968705eeb36 9 DigitalOut cafe(PTB2);
poresc 0:2968705eeb36 10 DigitalOut amarillo(PTB3);
poresc 0:2968705eeb36 11 DigitalIn pulso(PTC1);
poresc 0:2968705eeb36 12 void velocidad(int a,float ad);
poresc 0:2968705eeb36 13 double temp=0;
poresc 0:2968705eeb36 14 int numero_pasos=0;
poresc 0:2968705eeb36 15 int k=0;
poresc 0:2968705eeb36 16 string cadena;
poresc 0:2968705eeb36 17 int selec;
poresc 0:2968705eeb36 18 char sentido;
poresc 0:2968705eeb36 19 int recorrido=0;
poresc 0:2968705eeb36 20 char tiempo;
poresc 0:2968705eeb36 21 bool antirebote=false;
poresc 0:2968705eeb36 22 Timer Timer1;
poresc 0:2968705eeb36 23 float rpm=0,auxrpm=0;
poresc 0:2968705eeb36 24 int r=0;
poresc 0:2968705eeb36 25 int dist(char datos[5]);
poresc 0:2968705eeb36 26
poresc 0:2968705eeb36 27
poresc 0:2968705eeb36 28 int main(){
poresc 0:2968705eeb36 29 char buffer[5];
poresc 0:2968705eeb36 30 int red=0;
poresc 0:2968705eeb36 31 while(1){
poresc 0:2968705eeb36 32 if((pulso==0)&&(antirebote==false)){
poresc 0:2968705eeb36 33 // contador++;
poresc 0:2968705eeb36 34 //disa++;
poresc 0:2968705eeb36 35 antirebote=true;
poresc 0:2968705eeb36 36 auxrpm=Timer1.read_ms();
poresc 0:2968705eeb36 37 Timer1.stop();
poresc 0:2968705eeb36 38 Timer1.reset();
poresc 0:2968705eeb36 39 // rpm=10000/auxrpm;
poresc 0:2968705eeb36 40
poresc 0:2968705eeb36 41 if(recorrido>0){
poresc 0:2968705eeb36 42 Timer1.start();}
poresc 0:2968705eeb36 43 }
poresc 0:2968705eeb36 44 if((pulso==1)&&(antirebote==true)){
poresc 0:2968705eeb36 45 antirebote=false;
poresc 0:2968705eeb36 46 }
poresc 0:2968705eeb36 47
poresc 0:2968705eeb36 48
poresc 0:2968705eeb36 49 if(pc.readable()){// captura string
poresc 0:2968705eeb36 50
poresc 0:2968705eeb36 51 pc.gets(buffer,8);
poresc 0:2968705eeb36 52 buffer[0]=' ';
poresc 0:2968705eeb36 53 //pc.printf("%s",buffer);
poresc 0:2968705eeb36 54 sentido=buffer[1];
poresc 0:2968705eeb36 55
poresc 0:2968705eeb36 56 // lcd.printf("%d",temp);
poresc 0:2968705eeb36 57 }
poresc 0:2968705eeb36 58 red=dist(buffer);
poresc 0:2968705eeb36 59 if(red!=0){
poresc 0:2968705eeb36 60
poresc 0:2968705eeb36 61 red=dist(buffer);
poresc 0:2968705eeb36 62 temp=red*0.01;
poresc 0:2968705eeb36 63 /* lcd.cls();
poresc 0:2968705eeb36 64 lcd.locate(0,0);
poresc 0:2968705eeb36 65 lcd.printf("%d",red);
poresc 0:2968705eeb36 66 lcd.locate(0,1);
poresc 0:2968705eeb36 67 lcd.printf("%.3f",temp);*/
poresc 0:2968705eeb36 68
poresc 0:2968705eeb36 69 }
poresc 0:2968705eeb36 70
poresc 0:2968705eeb36 71
poresc 0:2968705eeb36 72 /*if(tiempo=='1'){
poresc 0:2968705eeb36 73 temp=0.001;}*/
poresc 0:2968705eeb36 74 if(sentido=='d'){
poresc 0:2968705eeb36 75
poresc 0:2968705eeb36 76 //lcd.printf("esta en los extremos");
poresc 0:2968705eeb36 77 selec=1;
poresc 0:2968705eeb36 78 //pc.printf(" derecha");
poresc 0:2968705eeb36 79 for(int i=0; i<=600;i++){
poresc 0:2968705eeb36 80 if(k>4){
poresc 0:2968705eeb36 81 r=r+1;
poresc 0:2968705eeb36 82 k=0;
poresc 0:2968705eeb36 83 }
poresc 0:2968705eeb36 84 if(r==11){
poresc 0:2968705eeb36 85 rpm=(r*(1/temp)*60)/1000;
poresc 0:2968705eeb36 86 lcd.cls();
poresc 0:2968705eeb36 87 lcd.locate(0,0);
poresc 0:2968705eeb36 88 lcd.printf("%.3f",rpm);
poresc 0:2968705eeb36 89 r=0;}
poresc 0:2968705eeb36 90 k=k+1;
poresc 0:2968705eeb36 91 switch(k){
poresc 0:2968705eeb36 92 case 1:
poresc 0:2968705eeb36 93 amarillo=1;
poresc 0:2968705eeb36 94 negro=0;
poresc 0:2968705eeb36 95 //wait(0.2);
poresc 0:2968705eeb36 96 break;
poresc 0:2968705eeb36 97 case 2:
poresc 0:2968705eeb36 98 cafe=1;
poresc 0:2968705eeb36 99 amarillo=0;
poresc 0:2968705eeb36 100 //wait(0.2);
poresc 0:2968705eeb36 101 break;
poresc 0:2968705eeb36 102 case 3:
poresc 0:2968705eeb36 103 naranja=1;
poresc 0:2968705eeb36 104 cafe=0;
poresc 0:2968705eeb36 105 // wait(0.2);
poresc 0:2968705eeb36 106 break;
poresc 0:2968705eeb36 107 case 4:
poresc 0:2968705eeb36 108 negro=1;
poresc 0:2968705eeb36 109 naranja=0;
poresc 0:2968705eeb36 110 // wait(0.2);
poresc 0:2968705eeb36 111 break;
poresc 0:2968705eeb36 112 }
poresc 0:2968705eeb36 113 wait(temp);
poresc 0:2968705eeb36 114
poresc 0:2968705eeb36 115
poresc 0:2968705eeb36 116
poresc 0:2968705eeb36 117 }
poresc 0:2968705eeb36 118
poresc 0:2968705eeb36 119 //rpm=0;
poresc 0:2968705eeb36 120 // red=0;
poresc 0:2968705eeb36 121 }
poresc 0:2968705eeb36 122 lcd.cls();
poresc 0:2968705eeb36 123 lcd.locate(0,0);
poresc 0:2968705eeb36 124 lcd.printf("esperando");
poresc 0:2968705eeb36 125 pc.printf("esperando ");
poresc 0:2968705eeb36 126
poresc 0:2968705eeb36 127 if(sentido=='i'){
poresc 0:2968705eeb36 128 selec=2;
poresc 0:2968705eeb36 129 //pc.printf(" izquierda");
poresc 0:2968705eeb36 130 for(int i=0; i<=600;i++){
poresc 0:2968705eeb36 131 if(k>4){
poresc 0:2968705eeb36 132 k=0;
poresc 0:2968705eeb36 133 r=r+1;
poresc 0:2968705eeb36 134 }
poresc 0:2968705eeb36 135 if(r==11){
poresc 0:2968705eeb36 136 rpm=(r*(1/temp)*60)/1000;
poresc 0:2968705eeb36 137 lcd.cls();
poresc 0:2968705eeb36 138 lcd.locate(0,0);
poresc 0:2968705eeb36 139 lcd.printf("%.3f",rpm);
poresc 0:2968705eeb36 140 pc.printf("%.1f",rpm);
poresc 0:2968705eeb36 141 r=0;}
poresc 0:2968705eeb36 142 k=k+1;
poresc 0:2968705eeb36 143 switch(k){
poresc 0:2968705eeb36 144 case 1:
poresc 0:2968705eeb36 145 negro=1;
poresc 0:2968705eeb36 146 amarillo=0;
poresc 0:2968705eeb36 147 //wait(0.2);
poresc 0:2968705eeb36 148 break;
poresc 0:2968705eeb36 149 case 2:
poresc 0:2968705eeb36 150 naranja=1;
poresc 0:2968705eeb36 151 negro=0;
poresc 0:2968705eeb36 152 //wait(0.2);
poresc 0:2968705eeb36 153 break;
poresc 0:2968705eeb36 154 case 3:
poresc 0:2968705eeb36 155 cafe=1;
poresc 0:2968705eeb36 156 naranja=0;
poresc 0:2968705eeb36 157 // wait(0.2);
poresc 0:2968705eeb36 158 break;
poresc 0:2968705eeb36 159 case 4:
poresc 0:2968705eeb36 160 amarillo=1;
poresc 0:2968705eeb36 161 cafe=0;
poresc 0:2968705eeb36 162 // wait(0.2);
poresc 0:2968705eeb36 163 break;
poresc 0:2968705eeb36 164 }
poresc 0:2968705eeb36 165 wait(temp);
poresc 0:2968705eeb36 166
poresc 0:2968705eeb36 167
poresc 0:2968705eeb36 168
poresc 0:2968705eeb36 169 }
poresc 0:2968705eeb36 170
poresc 0:2968705eeb36 171 // rpm=0;
poresc 0:2968705eeb36 172 // red=0;
poresc 0:2968705eeb36 173 }
poresc 0:2968705eeb36 174 lcd.cls();
poresc 0:2968705eeb36 175 lcd.locate(0,0);
poresc 0:2968705eeb36 176 lcd.printf("esperando");
poresc 0:2968705eeb36 177 pc.printf(" esperando");
poresc 0:2968705eeb36 178
poresc 0:2968705eeb36 179
poresc 0:2968705eeb36 180 if(sentido=='n'){
poresc 0:2968705eeb36 181 /* cafe=0;
poresc 0:2968705eeb36 182 amarillo=0;
poresc 0:2968705eeb36 183 negro=0;
poresc 0:2968705eeb36 184 naranja=0;
poresc 0:2968705eeb36 185 selec=0;*/
poresc 0:2968705eeb36 186 // pc.printf(" sin sentido");
poresc 0:2968705eeb36 187 }
poresc 0:2968705eeb36 188 // wait(0.5);
poresc 0:2968705eeb36 189
poresc 0:2968705eeb36 190
poresc 0:2968705eeb36 191
poresc 0:2968705eeb36 192 }
poresc 0:2968705eeb36 193 }
poresc 0:2968705eeb36 194
poresc 0:2968705eeb36 195 int dist(char datos[8]){
poresc 0:2968705eeb36 196 int numero=0,contador=0;
poresc 0:2968705eeb36 197 char c=' ';
poresc 0:2968705eeb36 198 for(int i = 8;i >= 0;i --){
poresc 0:2968705eeb36 199 c=datos[i];
poresc 0:2968705eeb36 200 //pc.putc(c);
poresc 0:2968705eeb36 201 if(c=='0'){contador=contador+1; }
poresc 0:2968705eeb36 202 if(c=='1'){
poresc 0:2968705eeb36 203 // pc.printf("uno");
poresc 0:2968705eeb36 204 contador=contador+1;
poresc 0:2968705eeb36 205 if(contador==1){numero=numero+1;}}
poresc 0:2968705eeb36 206 /* if(contador==2){numero=numero+10;}
poresc 0:2968705eeb36 207 if(contador==3){numero=numero+100;} }*/
poresc 0:2968705eeb36 208 if(c=='2'){
poresc 0:2968705eeb36 209 contador=contador+1;
poresc 0:2968705eeb36 210 if(contador==1){numero=numero+2;}}
poresc 0:2968705eeb36 211 /* if(contador==2){numero=numero+20;}
poresc 0:2968705eeb36 212 if(contador==3){numero=numero+200;} }*/
poresc 0:2968705eeb36 213 if(c=='3'){
poresc 0:2968705eeb36 214 contador=contador+1;
poresc 0:2968705eeb36 215 if(contador==1){numero=numero+3;}}
poresc 0:2968705eeb36 216 /*if(contador==2){numero=numero+30;}
poresc 0:2968705eeb36 217 if(contador==3){numero=numero+300;} }*/
poresc 0:2968705eeb36 218 if(c=='4'){
poresc 0:2968705eeb36 219 contador=contador+1;
poresc 0:2968705eeb36 220 if(contador==1){numero=numero+4;}}
poresc 0:2968705eeb36 221 /* if(contador==2){numero=numero+40;}
poresc 0:2968705eeb36 222 if(contador==3){numero=numero+400;} }*/
poresc 0:2968705eeb36 223 if(c=='5'){
poresc 0:2968705eeb36 224 contador=contador+1;
poresc 0:2968705eeb36 225 if(contador==1){numero=numero+5;}}
poresc 0:2968705eeb36 226 /* if(contador==2){numero=numero+50;}
poresc 0:2968705eeb36 227 if(contador==3){numero=numero+500;} }*/
poresc 0:2968705eeb36 228 if(c=='6'){
poresc 0:2968705eeb36 229 contador=contador+1;
poresc 0:2968705eeb36 230 if(contador==1){numero=numero+6;}}
poresc 0:2968705eeb36 231 /* if(contador==2){numero=numero+60;}
poresc 0:2968705eeb36 232 if(contador==3){numero=numero+600;} }*/
poresc 0:2968705eeb36 233 if(c=='7'){
poresc 0:2968705eeb36 234 contador=contador+1;
poresc 0:2968705eeb36 235 if(contador==1){numero=numero+7;}}
poresc 0:2968705eeb36 236 /*if(contador==2){numero=numero+70;}
poresc 0:2968705eeb36 237 if(contador==3){numero=numero+700;} }*/
poresc 0:2968705eeb36 238 if(c=='8'){
poresc 0:2968705eeb36 239 contador=contador+1;
poresc 0:2968705eeb36 240 if(contador==1){numero=numero+8;}}
poresc 0:2968705eeb36 241 /* if(contador==2){numero=numero+80;}
poresc 0:2968705eeb36 242 if(contador==3){numero=numero+800;} }*/
poresc 0:2968705eeb36 243 if(c=='9'){
poresc 0:2968705eeb36 244 contador=contador+1;
poresc 0:2968705eeb36 245 if(contador==1){numero=numero+9;}}
poresc 0:2968705eeb36 246 /* if(contador==2){numero=numero+90;}
poresc 0:2968705eeb36 247 if(contador==3){numero=numero+900;} }*/
poresc 0:2968705eeb36 248
poresc 0:2968705eeb36 249 }
poresc 0:2968705eeb36 250
poresc 0:2968705eeb36 251
poresc 0:2968705eeb36 252
poresc 0:2968705eeb36 253
poresc 0:2968705eeb36 254 // lcd.printf("%d",numero);
poresc 0:2968705eeb36 255
poresc 0:2968705eeb36 256 return numero;
poresc 0:2968705eeb36 257
poresc 0:2968705eeb36 258
poresc 0:2968705eeb36 259
poresc 0:2968705eeb36 260
poresc 0:2968705eeb36 261
poresc 0:2968705eeb36 262
poresc 0:2968705eeb36 263 }