![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
control movimiento motor con interfaz
main.cpp@2:64a863ae5850, 2020-11-22 (annotated)
- Committer:
- juankafil1
- Date:
- Sun Nov 22 23:40:35 2020 +0000
- Revision:
- 2:64a863ae5850
- Parent:
- 1:98ce9ed49158
po
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
poresc | 0:b9f21a1a1fac | 1 | #include "string" |
poresc | 0:b9f21a1a1fac | 2 | #include "mbed.h" |
poresc | 0:b9f21a1a1fac | 3 | #include "sstream" |
juankafil1 | 2:64a863ae5850 | 4 | #include <string> |
juankafil1 | 1:98ce9ed49158 | 5 | #include "TextLCD.h" |
juankafil1 | 1:98ce9ed49158 | 6 | |
juankafil1 | 1:98ce9ed49158 | 7 | TextLCD lcd(PTE20,PTE21,PTE22,PTE23,PTE29,PTE30, TextLCD::LCD16x2);// Rs, E, d4, d5, d6, d7, RW=GND |
poresc | 0:b9f21a1a1fac | 8 | Serial pc(USBTX,USBRX); |
poresc | 0:b9f21a1a1fac | 9 | DigitalIn pulso(PTC5); |
poresc | 0:b9f21a1a1fac | 10 | DigitalOut right(PTC7); |
poresc | 0:b9f21a1a1fac | 11 | DigitalOut left(PTC0); |
juankafil1 | 2:64a863ae5850 | 12 | DigitalIn start(PTC3),finish(PTC7); |
juankafil1 | 1:98ce9ed49158 | 13 | Timer Timer1; |
poresc | 0:b9f21a1a1fac | 14 | int rea,ns; |
poresc | 0:b9f21a1a1fac | 15 | string cadena; |
poresc | 0:b9f21a1a1fac | 16 | using namespace std; |
poresc | 0:b9f21a1a1fac | 17 | void velocidad(int a,float ad); |
juankafil1 | 2:64a863ae5850 | 18 | int dist(char datos[5]); |
poresc | 0:b9f21a1a1fac | 19 | PwmOut l1(PTB3),l2(PTC2); |
poresc | 0:b9f21a1a1fac | 20 | int selec; |
poresc | 0:b9f21a1a1fac | 21 | float cambio; |
juankafil1 | 1:98ce9ed49158 | 22 | float rpm=0,auxrpm=0; |
juankafil1 | 1:98ce9ed49158 | 23 | int contador=0; |
juankafil1 | 2:64a863ae5850 | 24 | int distancia=0,disa=0; |
juankafil1 | 1:98ce9ed49158 | 25 | bool antirebote=false; |
juankafil1 | 2:64a863ae5850 | 26 | int recorrido=0; |
juankafil1 | 2:64a863ae5850 | 27 | char cade; |
poresc | 0:b9f21a1a1fac | 28 | //using namespace boost; |
poresc | 0:b9f21a1a1fac | 29 | float h; |
juankafil1 | 2:64a863ae5850 | 30 | void inicio(){ |
juankafil1 | 2:64a863ae5850 | 31 | while(1){ |
juankafil1 | 2:64a863ae5850 | 32 | if(start==0){ |
juankafil1 | 2:64a863ae5850 | 33 | break; |
juankafil1 | 2:64a863ae5850 | 34 | } |
juankafil1 | 2:64a863ae5850 | 35 | velocidad(2,0.5); |
juankafil1 | 2:64a863ae5850 | 36 | } |
juankafil1 | 2:64a863ae5850 | 37 | } |
juankafil1 | 2:64a863ae5850 | 38 | void rampa (int sel){ |
juankafil1 | 2:64a863ae5850 | 39 | for(float i=1;i<=10;i++){ |
juankafil1 | 2:64a863ae5850 | 40 | velocidad(sel,i*10); |
juankafil1 | 2:64a863ae5850 | 41 | wait(0.01); |
juankafil1 | 2:64a863ae5850 | 42 | } |
juankafil1 | 2:64a863ae5850 | 43 | } |
poresc | 0:b9f21a1a1fac | 44 | int main(){ |
juankafil1 | 1:98ce9ed49158 | 45 | velocidad(0,0); |
juankafil1 | 2:64a863ae5850 | 46 | inicio(); |
juankafil1 | 2:64a863ae5850 | 47 | velocidad(0,0); |
juankafil1 | 2:64a863ae5850 | 48 | lcd.printf("esta en los extremos"); |
juankafil1 | 2:64a863ae5850 | 49 | int red=0; |
juankafil1 | 2:64a863ae5850 | 50 | char buffer[5]; |
poresc | 0:b9f21a1a1fac | 51 | while(1){ |
juankafil1 | 1:98ce9ed49158 | 52 | if((pulso==0)&&(antirebote==false)){ |
juankafil1 | 1:98ce9ed49158 | 53 | contador++; |
juankafil1 | 2:64a863ae5850 | 54 | disa++; |
juankafil1 | 1:98ce9ed49158 | 55 | antirebote=true; |
juankafil1 | 2:64a863ae5850 | 56 | auxrpm=Timer1.read_ms(); |
juankafil1 | 2:64a863ae5850 | 57 | Timer1.stop(); |
juankafil1 | 2:64a863ae5850 | 58 | Timer1.reset(); |
juankafil1 | 2:64a863ae5850 | 59 | rpm=10000/auxrpm; |
juankafil1 | 2:64a863ae5850 | 60 | |
juankafil1 | 2:64a863ae5850 | 61 | if(recorrido>0){ |
juankafil1 | 2:64a863ae5850 | 62 | Timer1.start();} |
juankafil1 | 1:98ce9ed49158 | 63 | } |
juankafil1 | 1:98ce9ed49158 | 64 | if((pulso==1)&&(antirebote==true)){ |
juankafil1 | 1:98ce9ed49158 | 65 | antirebote=false; |
juankafil1 | 1:98ce9ed49158 | 66 | } |
juankafil1 | 2:64a863ae5850 | 67 | |
juankafil1 | 2:64a863ae5850 | 68 | if(contador==6){ |
juankafil1 | 1:98ce9ed49158 | 69 | |
juankafil1 | 2:64a863ae5850 | 70 | contador=0; |
juankafil1 | 2:64a863ae5850 | 71 | distancia=distancia+1; |
juankafil1 | 2:64a863ae5850 | 72 | |
juankafil1 | 2:64a863ae5850 | 73 | //distancia=distancia+1; |
poresc | 0:b9f21a1a1fac | 74 | } |
juankafil1 | 2:64a863ae5850 | 75 | |
juankafil1 | 2:64a863ae5850 | 76 | if(red>0){ |
juankafil1 | 2:64a863ae5850 | 77 | if(selec==1){ |
juankafil1 | 2:64a863ae5850 | 78 | velocidad(selec,0.3); |
juankafil1 | 2:64a863ae5850 | 79 | pc.printf("uuno"); |
juankafil1 | 2:64a863ae5850 | 80 | |
juankafil1 | 2:64a863ae5850 | 81 | |
juankafil1 | 2:64a863ae5850 | 82 | if(disa==2){velocidad(selec,0.4);} |
juankafil1 | 2:64a863ae5850 | 83 | if(disa==3){velocidad(selec,0.6);} |
juankafil1 | 2:64a863ae5850 | 84 | if(disa==4){velocidad(selec,0.8);} |
juankafil1 | 2:64a863ae5850 | 85 | if((disa<recorrido)&&(disa>4)){ |
juankafil1 | 2:64a863ae5850 | 86 | |
juankafil1 | 2:64a863ae5850 | 87 | velocidad(selec,1); |
juankafil1 | 2:64a863ae5850 | 88 | } if( disa >= red ){ |
juankafil1 | 2:64a863ae5850 | 89 | distancia=0; |
juankafil1 | 2:64a863ae5850 | 90 | disa=0; |
juankafil1 | 2:64a863ae5850 | 91 | red=0; |
juankafil1 | 2:64a863ae5850 | 92 | recorrido=0; |
juankafil1 | 2:64a863ae5850 | 93 | velocidad(0,0); |
juankafil1 | 2:64a863ae5850 | 94 | } |
juankafil1 | 2:64a863ae5850 | 95 | |
juankafil1 | 2:64a863ae5850 | 96 | }if (selec==2){ |
juankafil1 | 2:64a863ae5850 | 97 | velocidad(selec,0.3); |
juankafil1 | 2:64a863ae5850 | 98 | pc.printf("dos"); |
juankafil1 | 2:64a863ae5850 | 99 | |
juankafil1 | 2:64a863ae5850 | 100 | if(disa==2){velocidad(selec,0.4);} |
juankafil1 | 2:64a863ae5850 | 101 | if(disa==3){velocidad(selec,0.6);} |
juankafil1 | 2:64a863ae5850 | 102 | if(disa==4){velocidad(selec,0.8);} |
juankafil1 | 2:64a863ae5850 | 103 | if((disa<recorrido)&&(disa>4)){ |
juankafil1 | 2:64a863ae5850 | 104 | |
juankafil1 | 2:64a863ae5850 | 105 | velocidad(selec,1); |
juankafil1 | 2:64a863ae5850 | 106 | |
juankafil1 | 2:64a863ae5850 | 107 | |
juankafil1 | 2:64a863ae5850 | 108 | }if( disa >= red ){ |
juankafil1 | 2:64a863ae5850 | 109 | distancia=0; |
juankafil1 | 2:64a863ae5850 | 110 | selec=0; |
juankafil1 | 2:64a863ae5850 | 111 | disa=0; |
juankafil1 | 2:64a863ae5850 | 112 | red=0; |
juankafil1 | 2:64a863ae5850 | 113 | recorrido=0; |
juankafil1 | 2:64a863ae5850 | 114 | velocidad(0,0); |
juankafil1 | 2:64a863ae5850 | 115 | } |
juankafil1 | 2:64a863ae5850 | 116 | } |
poresc | 0:b9f21a1a1fac | 117 | } |
juankafil1 | 2:64a863ae5850 | 118 | |
juankafil1 | 2:64a863ae5850 | 119 | if(pc.readable()){// captura string |
juankafil1 | 2:64a863ae5850 | 120 | |
juankafil1 | 2:64a863ae5850 | 121 | pc.gets(buffer,8); |
juankafil1 | 2:64a863ae5850 | 122 | buffer[0]=' '; |
juankafil1 | 2:64a863ae5850 | 123 | cade=buffer[1]; |
juankafil1 | 2:64a863ae5850 | 124 | if(red==0){ |
juankafil1 | 2:64a863ae5850 | 125 | red=dist(buffer); |
juankafil1 | 2:64a863ae5850 | 126 | } |
juankafil1 | 2:64a863ae5850 | 127 | if(red>0){ |
juankafil1 | 2:64a863ae5850 | 128 | recorrido=red*6; |
juankafil1 | 2:64a863ae5850 | 129 | } |
juankafil1 | 2:64a863ae5850 | 130 | //pc.printf("%s",buffer); |
juankafil1 | 2:64a863ae5850 | 131 | // dist(buffer); |
juankafil1 | 2:64a863ae5850 | 132 | //pc.printf("%s",cadena); |
juankafil1 | 2:64a863ae5850 | 133 | pc.printf("%d",recorrido); |
juankafil1 | 2:64a863ae5850 | 134 | } |
juankafil1 | 2:64a863ae5850 | 135 | |
juankafil1 | 2:64a863ae5850 | 136 | if(cade=='d'){ |
juankafil1 | 2:64a863ae5850 | 137 | selec=1; |
juankafil1 | 2:64a863ae5850 | 138 | |
juankafil1 | 1:98ce9ed49158 | 139 | } |
juankafil1 | 2:64a863ae5850 | 140 | if (cade=='i'){ |
juankafil1 | 2:64a863ae5850 | 141 | selec=2; |
juankafil1 | 2:64a863ae5850 | 142 | |
juankafil1 | 2:64a863ae5850 | 143 | |
juankafil1 | 2:64a863ae5850 | 144 | } |
juankafil1 | 2:64a863ae5850 | 145 | if(cade=='n'){selec=0; |
juankafil1 | 1:98ce9ed49158 | 146 | } |
juankafil1 | 2:64a863ae5850 | 147 | |
juankafil1 | 2:64a863ae5850 | 148 | |
juankafil1 | 2:64a863ae5850 | 149 | |
juankafil1 | 2:64a863ae5850 | 150 | |
juankafil1 | 2:64a863ae5850 | 151 | |
juankafil1 | 2:64a863ae5850 | 152 | |
juankafil1 | 2:64a863ae5850 | 153 | |
juankafil1 | 1:98ce9ed49158 | 154 | wait(0.01); |
juankafil1 | 2:64a863ae5850 | 155 | |
poresc | 0:b9f21a1a1fac | 156 | // selec=1; |
juankafil1 | 2:64a863ae5850 | 157 | |
poresc | 0:b9f21a1a1fac | 158 | |
juankafil1 | 2:64a863ae5850 | 159 | //velocidad(selec,cambio); |
juankafil1 | 1:98ce9ed49158 | 160 | |
juankafil1 | 1:98ce9ed49158 | 161 | |
juankafil1 | 1:98ce9ed49158 | 162 | |
poresc | 0:b9f21a1a1fac | 163 | } |
poresc | 0:b9f21a1a1fac | 164 | |
poresc | 0:b9f21a1a1fac | 165 | } |
poresc | 0:b9f21a1a1fac | 166 | |
juankafil1 | 1:98ce9ed49158 | 167 | void velocidad(int a ,float ad){ |
poresc | 0:b9f21a1a1fac | 168 | switch (a){ |
poresc | 0:b9f21a1a1fac | 169 | case 0: |
juankafil1 | 2:64a863ae5850 | 170 | lcd.cls(); |
juankafil1 | 2:64a863ae5850 | 171 | lcd.locate(0,0); |
juankafil1 | 2:64a863ae5850 | 172 | lcd.printf("%d mm",distancia); |
juankafil1 | 2:64a863ae5850 | 173 | lcd.locate(0,1); |
juankafil1 | 2:64a863ae5850 | 174 | lcd.printf(" V :%.2f rpm",rpm); |
poresc | 0:b9f21a1a1fac | 175 | l1=0; |
poresc | 0:b9f21a1a1fac | 176 | l2=0; |
juankafil1 | 2:64a863ae5850 | 177 | |
poresc | 0:b9f21a1a1fac | 178 | break; |
poresc | 0:b9f21a1a1fac | 179 | case 1: |
juankafil1 | 2:64a863ae5850 | 180 | |
juankafil1 | 2:64a863ae5850 | 181 | if(rpm<10){ |
juankafil1 | 2:64a863ae5850 | 182 | pc.printf("00%.1f ,%d ",rpm,distancia); |
juankafil1 | 2:64a863ae5850 | 183 | } |
juankafil1 | 2:64a863ae5850 | 184 | if((rpm>10)&&(rpm<100)){ |
juankafil1 | 2:64a863ae5850 | 185 | pc.printf("0%.1f ,%d ",rpm,distancia); |
juankafil1 | 2:64a863ae5850 | 186 | } |
juankafil1 | 2:64a863ae5850 | 187 | if(rpm>100){ |
juankafil1 | 2:64a863ae5850 | 188 | pc.printf("0%.1f ,%d ",rpm,distancia); |
juankafil1 | 2:64a863ae5850 | 189 | } |
juankafil1 | 2:64a863ae5850 | 190 | |
juankafil1 | 2:64a863ae5850 | 191 | lcd.cls(); |
juankafil1 | 2:64a863ae5850 | 192 | lcd.locate(0,0); |
juankafil1 | 2:64a863ae5850 | 193 | lcd.printf("%d mm",distancia); |
juankafil1 | 2:64a863ae5850 | 194 | lcd.locate(0,1); |
juankafil1 | 2:64a863ae5850 | 195 | lcd.printf(" V :%.2f rpm",rpm); |
juankafil1 | 2:64a863ae5850 | 196 | l1.write(ad); wait(0.02); |
juankafil1 | 2:64a863ae5850 | 197 | |
poresc | 0:b9f21a1a1fac | 198 | l2=0; |
poresc | 0:b9f21a1a1fac | 199 | break; |
poresc | 0:b9f21a1a1fac | 200 | case 2: |
juankafil1 | 2:64a863ae5850 | 201 | if(rpm<10){ |
juankafil1 | 2:64a863ae5850 | 202 | pc.printf("00%.1f ,%d ",rpm,distancia); |
juankafil1 | 2:64a863ae5850 | 203 | } |
juankafil1 | 2:64a863ae5850 | 204 | if((rpm>10)&&(rpm<100)){ |
juankafil1 | 2:64a863ae5850 | 205 | pc.printf("0%.1f ,%d ",rpm,distancia); |
juankafil1 | 2:64a863ae5850 | 206 | } |
juankafil1 | 2:64a863ae5850 | 207 | if(rpm>100){ |
juankafil1 | 2:64a863ae5850 | 208 | pc.printf("0%.1f ,%d ",rpm,distancia); |
juankafil1 | 2:64a863ae5850 | 209 | } |
juankafil1 | 2:64a863ae5850 | 210 | lcd.cls(); |
juankafil1 | 2:64a863ae5850 | 211 | lcd.locate(0,0); |
juankafil1 | 2:64a863ae5850 | 212 | lcd.printf("%d mm",distancia); |
juankafil1 | 2:64a863ae5850 | 213 | lcd.locate(0,1); |
juankafil1 | 2:64a863ae5850 | 214 | lcd.printf("%.2f rpm",rpm); |
juankafil1 | 2:64a863ae5850 | 215 | wait(0.02); |
poresc | 0:b9f21a1a1fac | 216 | l2.write(ad); |
poresc | 0:b9f21a1a1fac | 217 | l1=0; |
poresc | 0:b9f21a1a1fac | 218 | break; |
poresc | 0:b9f21a1a1fac | 219 | |
poresc | 0:b9f21a1a1fac | 220 | } |
juankafil1 | 1:98ce9ed49158 | 221 | |
poresc | 0:b9f21a1a1fac | 222 | } |
poresc | 0:b9f21a1a1fac | 223 | |
juankafil1 | 2:64a863ae5850 | 224 | int dist(char datos[8]){ |
juankafil1 | 2:64a863ae5850 | 225 | int numero=0,contador=0; |
juankafil1 | 2:64a863ae5850 | 226 | char c=' '; |
juankafil1 | 2:64a863ae5850 | 227 | for(int i = 8;i >= 0;i --){ |
juankafil1 | 2:64a863ae5850 | 228 | c=datos[i]; |
juankafil1 | 2:64a863ae5850 | 229 | //pc.putc(c); |
juankafil1 | 2:64a863ae5850 | 230 | if(c=='0'){contador=contador+1; } |
juankafil1 | 2:64a863ae5850 | 231 | if(c=='1'){ |
juankafil1 | 2:64a863ae5850 | 232 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 233 | if(contador==1){numero=numero+1;} |
juankafil1 | 2:64a863ae5850 | 234 | if(contador==2){numero=numero+10;} |
juankafil1 | 2:64a863ae5850 | 235 | if(contador==3){numero=numero+100;} } |
juankafil1 | 2:64a863ae5850 | 236 | if(c=='2'){ |
juankafil1 | 2:64a863ae5850 | 237 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 238 | if(contador==1){numero=numero+2;} |
juankafil1 | 2:64a863ae5850 | 239 | if(contador==2){numero=numero+20;} |
juankafil1 | 2:64a863ae5850 | 240 | if(contador==3){numero=numero+200;} } |
juankafil1 | 2:64a863ae5850 | 241 | if(c=='3'){ |
juankafil1 | 2:64a863ae5850 | 242 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 243 | if(contador==1){numero=numero+3;} |
juankafil1 | 2:64a863ae5850 | 244 | if(contador==2){numero=numero+30;} |
juankafil1 | 2:64a863ae5850 | 245 | if(contador==3){numero=numero+300;} } |
juankafil1 | 2:64a863ae5850 | 246 | if(c=='4'){ |
juankafil1 | 2:64a863ae5850 | 247 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 248 | if(contador==1){numero=numero+4;} |
juankafil1 | 2:64a863ae5850 | 249 | if(contador==2){numero=numero+40;} |
juankafil1 | 2:64a863ae5850 | 250 | if(contador==3){numero=numero+400;} } |
juankafil1 | 2:64a863ae5850 | 251 | if(c=='5'){ |
juankafil1 | 2:64a863ae5850 | 252 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 253 | if(contador==1){numero=numero+5;} |
juankafil1 | 2:64a863ae5850 | 254 | if(contador==2){numero=numero+50;} |
juankafil1 | 2:64a863ae5850 | 255 | if(contador==3){numero=numero+500;} } |
juankafil1 | 2:64a863ae5850 | 256 | if(c=='6'){ |
juankafil1 | 2:64a863ae5850 | 257 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 258 | if(contador==1){numero=numero+6;} |
juankafil1 | 2:64a863ae5850 | 259 | if(contador==2){numero=numero+60;} |
juankafil1 | 2:64a863ae5850 | 260 | if(contador==3){numero=numero+600;} } |
juankafil1 | 2:64a863ae5850 | 261 | if(c=='7'){ |
juankafil1 | 2:64a863ae5850 | 262 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 263 | if(contador==1){numero=numero+7;} |
juankafil1 | 2:64a863ae5850 | 264 | if(contador==2){numero=numero+70;} |
juankafil1 | 2:64a863ae5850 | 265 | if(contador==3){numero=numero+700;} } |
juankafil1 | 2:64a863ae5850 | 266 | if(c=='8'){ |
juankafil1 | 2:64a863ae5850 | 267 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 268 | if(contador==1){numero=numero+8;} |
juankafil1 | 2:64a863ae5850 | 269 | if(contador==2){numero=numero+80;} |
juankafil1 | 2:64a863ae5850 | 270 | if(contador==3){numero=numero+800;} } |
juankafil1 | 2:64a863ae5850 | 271 | if(c=='9'){ |
juankafil1 | 2:64a863ae5850 | 272 | contador=contador+1; |
juankafil1 | 2:64a863ae5850 | 273 | if(contador==1){numero=numero+9;} |
juankafil1 | 2:64a863ae5850 | 274 | if(contador==2){numero=numero+90;} |
juankafil1 | 2:64a863ae5850 | 275 | if(contador==3){numero=numero+900;} } |
juankafil1 | 2:64a863ae5850 | 276 | |
juankafil1 | 2:64a863ae5850 | 277 | } |
juankafil1 | 2:64a863ae5850 | 278 | |
juankafil1 | 2:64a863ae5850 | 279 | |
juankafil1 | 2:64a863ae5850 | 280 | |
juankafil1 | 2:64a863ae5850 | 281 | |
juankafil1 | 2:64a863ae5850 | 282 | |
juankafil1 | 2:64a863ae5850 | 283 | return numero; |
juankafil1 | 2:64a863ae5850 | 284 | |
juankafil1 | 2:64a863ae5850 | 285 | |
juankafil1 | 2:64a863ae5850 | 286 | |
juankafil1 | 2:64a863ae5850 | 287 | |
juankafil1 | 2:64a863ae5850 | 288 | } |